2012-09-18 57 views
1

當我將鼠標懸停在我的gridview上時,我應用css來突出顯示鼠標移過的行。這將得到應用於傳呼機以及位於我的gridview的頂部和底部。我可以不是應用顏色樣式CSS到尋呼機行嗎? 感謝 達摩asp.net gridview pager hover

CSS

.mGrid tr:hover{background-color:#FFFFCC;color:white;} 

HTML

<asp:GridView ID="GridViewMain" OnRowDataBound="RowDataBound" OnPageIndexChanging="GridViewMain_PageIndexChanging" 
    runat="server" AllowPaging="True" PageSize="5" PagerSettings-Position="TopAndBottom" 
    CssClass="mGrid" 
    PagerStyle-CssClass="pgr" 
    AlternatingRowStyle-CssClass="alt" 
    OnRowCreated="GridViewMain_RowCreated"> 
</asp:GridView> 

代碼隱藏到一個下拉添加到尋呼機

protected void GridViewMain_RowCreated(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.Pager) 
      { 
       DropDownList GridViewMainddl = new DropDownList(); 
       //adds variants of pager size 
       GridViewMainddl.Items.Add("5"); 
       GridViewMainddl.Items.Add("10"); 
       GridViewMainddl.Items.Add("20"); 
       GridViewMainddl.Items.Add("50"); 
       GridViewMainddl.Items.Add("100"); 
       GridViewMainddl.Items.Add("200"); 
       GridViewMainddl.Items.Add("500"); 
       GridViewMainddl.Items.Add("All"); 
       GridViewMainddl.AutoPostBack = true; 
       //selects item due to the GridView current page size 
       ListItem li = GridViewMainddl.Items.FindByText(GridViewMain.PageSize.ToString()); 
       if (li != null) 
        GridViewMainddl.SelectedIndex = GridViewMainddl.Items.IndexOf(li); 
       GridViewMainddl.SelectedIndexChanged += new EventHandler(GridViewMainddl_SelectedIndexChanged); 
       //adds dropdownlist in the additional cell to the pager table 
       Table pagerTable = e.Row.Cells[0].Controls[0] as Table; 
       TableCell cell = new TableCell(); 
       cell.Style["padding-left"] = "15px"; 
       cell.Controls.Add(new LiteralControl("Page Size:")); 
       cell.Controls.Add(GridViewMainddl); 
       pagerTable.Rows[0].Cells.Add(cell); 

      } 
     } 

回答

2

使用RowStyle-CssClass屬性GridView將類應用於網格中的數據行。然後在樣式表中使用該類來應用懸停樣式。

GridView控件:

<asp:GridView ID="GridViewMain" 
    OnRowDataBound="RowDataBound" 
    OnPageIndexChanging="GridViewMain_PageIndexChanging" 
    runat="server" 
    AllowPaging="True" 
    PageSize="5" 
    PagerSettings-Position="TopAndBottom" 
    CssClass="mGrid" 
    PagerStyle-CssClass="pgr" 
    AlternatingRowStyle-CssClass="alt data-row" 
    RowStyle-CssClass="data-row" 
    OnRowCreated="GridViewMain_RowCreated"> 
</asp:GridView> 

風格:

.mGrid tr.data-row:hover { background-color:#FFFFCC; color:white; }

+0

嗨,這個工程,但隨後在實際網格的每一行上,只有當鼠標移過它時,每第二行纔會獲得顏色 – user1438082

+0

然後將'data-row'類添加到'AlternatingRowStyle-CssClass'。會是這樣的:'AlternatingRowStyle-CssClass =「alt data-row」'。我已經更新了我的答案。 – Gromer

+1

你是個天才!因爲沒有在原始問題中包含這個細節,所以我的錯是順便說一句。 – user1438082

1

你可以試試這個..

.mGrid tr:not(.pgr):hover{background-color:#FFFFCC;color:white;} 
+0

嗨,這工作,但我也有一個頁面大小下拉式選單,仍然得到替代顏色。 ive添加了上面的代碼 – user1438082

+0

您可以試試這個,而不是上面的代碼。 '.mGrid tr:not(.pgr):hover,.mGrid tr:not(.pgr):not(select):hover {background-color:#FFFFCC; color:white;}' –

2

你可以實現你的GridView的這種使用Row_DataBound事件。您可以選擇只包含數據的cellls並且不包括在尋呼機..試試這個

protected void RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#FFFFCC'"); 
     e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle"); 
    } 
} 

如果你不想使用內聯樣式..那麼你也可以使用ClassNames ..但是你需要添加一些jQuery代碼到你的頁面中。 在頁面的頭部部分只是包括這一點,它應該很好。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
<style type="text/css"> 
    .hoverClass 
    { 
     background-color: Red !important; 
     color: Green !important; 
    } 
</style> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(PostBack); 
     PostBack(); 
    }); 

    function PostBack() { 
     $('tbody tr:gt(1)').mouseover(function() { 
      $(this).addClass('hoverClass'); 
     }).mouseout(function() { 
     $(this).removeClass('hoverClass'); 
     }); 
    } 
</script> 
+0

嗨,這個工作完美,但理想情況下,我只想使用CSS,因爲它使項目更具可擴展性,因爲我有很多這種樣式將應用於的網格,而且我不幸有幾個網格的row_databound事件。這是一個很好的答案,如果CSS不會伎倆...... – user1438082

+0

我已經添加了一些代碼,如果你想使用類名稱,而不是內聯樣式 –

+0

感謝百萬。標記爲答案的CSS是我將實現此功能的方式。儘管如此,謝謝你的努力。 – user1438082