我在这个论坛上,看见有人发了鼠标方上面datagrid颜色就变的代码,但是虽然变了,但是变回来的不对...
我做了一个当鼠标放在上面,那行的datagrid就变色,但是他变色后,就便不会来了,因为我的datagrid是用了一个模版。是交叉颜色变换的那种。 
当鼠标移开,他只会变成datagrid中其中的一种颜色,导致以前的datagrid是交换的颜色,现在变成只是一种颜色的样式。不知道怎么改 代码: 
cs: 
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 

e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"" ); 
e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#B9D9FB"+"\"" ); 
} aspx: <asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 120px; POSITION: absolute; TOP: 160px" 
Font-Size="Larger" HorizontalAlign="Center" GridLines="Vertical" BorderColor="#999999" BorderStyle="None" 
BorderWidth="1px" BackColor="White" CellPadding="3" Width="150px" Height="500px" AutoGenerateColumns="False" 
runat="server"> 
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle> 
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle> 
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle> 
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="White" VerticalAlign="Middle" 
BackColor="#000084"></HeaderStyle> 
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle> 
<Columns> 
<asp:TemplateColumn HeaderText="A-E"> 
<ItemTemplate> 
<asp:Image Runat="server" ImageUrl="\yinyue\img\bul_05.gif"></asp:Image> 
<asp:HyperLink runat="server" ToolTip='<%# DataBinder.Eval(Container, "DataItem.nname") %>' Text='<%# DataBinder.Eval(Container, "DataItem.nname") %>' NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.nname", "zhanshi.aspx?name={0}") %>'> 
</asp:HyperLink> 
</ItemTemplate> 
</asp:TemplateColumn> 
</Columns> 
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>应该是不难吧~~~~~~
感觉关键的代码在这
e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"" ); 
这个变会来的只是datagrid中的一种交叉颜色~~

解决方案 »

  1.   

    onmouseover时用js记录下当前这行的背景色,onmouseout再把记录的颜色还原
      

  2.   

    请参考private void DataGridView_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

    //颜色交替   
    e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='seashell'"); 
    if(e.Item.ItemType == ListItemType.Item) 

    e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#ffffff'"); 
    }  if(e.Item.ItemType ==ListItemType.AlternatingItem) 

    e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='seashell'"); 

    }
    }
      

  3.   

    if(e.Item.ItemType == ListItemType.Item || 
      e.Item.ItemType == ListItemType.AlternatingItem) 
    {
      e.Item.Attributes.Add( "onmouseover",
        "this.OldBC=this.style.backgroundColor;this.style.backgroundColor='#B9D9FB';"); 
      e.Item.Attributes.Add( "onmouseout",
        "if(this.OldBC!=undefined)this.style.backgroundColor=this.OldBC;"); 
    }从datagrid继承产生自己的datagrid控件,将背景色设置成此控件的属性看上去更专业一些。