我们有一个ItemCommand使DataGridItem不可见。这打破了我们应用的交替配色方案。有没有办法重新应用样式而不重新绑定或手动设置每个DataGridItem的BackColor属性?
答案 0 :(得分:1)
没有任何东西可以自动修复不可见项目上的AlternatingItemStyle,无论是DataGrid还是GridView(据我所知)。
因此您可以手动修复它,例如以下列方式:
Private visibleRowIndex As Int32 = -1
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
hide/show the GridViewRow according to your business-logic'
If e.Row.Visible Then
visibleRowIndex += 1
e.Row.CssClass = If(visibleRowIndex Mod 2 = 0, "GridRowStyle", "GridAlternatingRowStyle")
End If
End If
End Sub
编辑:我忘记你正在使用DataGrid:
Private visibleRowIndex As Int32 = -1
Protected Sub DataGridItem_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles GridView1.RowDataBound
If e.Item.ItemType = ListItemType.Item OrElse _
e.Item.ItemType = ListItemType.AlternatingItem Then
'show/hide the DataGridItem according to your business-logic'
If e.Item.Visible Then
visibleRowIndex += 1
e.Item.CssClass = If(visibleRowIndex Mod 2 = 0, "GridRowStyle", "GridAlternatingRowStyle")
End If
End If
End Sub
答案 1 :(得分:1)
好吧,这完全是黑客攻击,但由于你似乎只关注BackColor,我可能完全抛弃交替的项目风格,并创建一个有两种颜色的图像,一种颜色在另一种颜色的顶部。将其设置为水平拉伸并垂直重复作为网格本身的背景。由于您可以控制项目的高度,因此只需使用正确高度的线条创建图像即可。
总的来说,我知道,但是它在100%的时间内都能正常工作并且在渲染方面非常快速。