ASP.NET GridView - Cannot set the colour of the row during databind?
- by Dan
This is driving me NUTS! It's something that I've done 100s of time with a Datagrid. I'm now using a Gridview and I can't figure this out.
I've got this grid:
<asp:GridView AutoGenerateColumns="false" runat="server" ID="gvSelect" CssClass="GridViewStyle"
GridLines="None" ShowHeader="False" PageSize="20" AllowPaging="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="lbldas" Text="blahblah"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
And during the RowDataBound I've tried:
Protected Sub gvSelect_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvSelect.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("onMouseOver", "this.style.backgroundColor='lightgrey'")
End If
End Sub
And it NEVER sets the row backcolor.. I've been successful in using:
gridrow.Cells(0).BackColor = Drawing.Color.Blue
But doing the entire row? NOPE! and it's driving me nuts.. does ANYONE have solution for me?
And just for fun I put this on the SAME page:
<asp:DataGrid AutoGenerateColumns="false" runat="server" ID="dgSelect" GridLines="None"
ShowHeader="False" PageSize="20" AllowPaging="True">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" ID="lbldas" Text="blahblah"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
And in the ItemDataBound I put:
If Not e.Item.ItemType = ListItemType.Header And Not e.Item.ItemType = ListItemType.Footer Then
e.Item.Attributes.Add("onMouseOver", "this.style.backgroundColor='lightgrey'")
End If
And it works as expected.. SO What am I doing wrong with the Gridview?
UPDATE **************
I thought I'd post the resulting HTML to show that any styles aren't affecting this.
Here's the gridview html:
<div class="AspNet-GridView" id="gvSelect">
<table cellpadding="0" cellspacing="0" summary="">
<tbody>
<tr>
<td>
<span id="gvSelect_ctl02_lbldas">blahblah</span>
</td>
</tr>
</tbody>
</table>
</div>
And here's the resulting Datagrid HTML:
<table cellspacing="0" border="0" id="dgSelect" style="border-collapse:collapse;">
<tr onMouseOver="this.style.backgroundColor='lightgrey'">
<td>
<span id="dgSelect_ctl03_lbldas">blahblah</span>
</td>
</tr>
</table>
See.. the main difference is the tag. It never gets set in the gridview.. and I don't know why.. I've traced through it.. and the code gets run.. :S