我的 ASP.NET 应用程序有一个奇怪的行为。我想更改网格视图中当前选定行的颜色。
我的 GridView 是这样定义的:
<asp:GridView [..] OnSelectedIndexChanged="SUPResultList_SelectedIndexChanged">
[..]
<RowStyle CssClass="DataGridItem" />
<AlternatingRowStyle CssClass="DataGridAlternateItem" />
</asp:GridView>
在我的代码隐藏中,我有:
protected void SUPResultList_SelectedIndexChanged(object sender, EventArgs e)
{
GridView grid = sender as GridView;
// I remove the class "selected" from the older row
foreach (GridViewRow row in grid.Rows)
{
row.CssClass = row.CssClass.Replace("AdminRowSelected", String.Empty);
}
grid.SelectedRow.CssClass = String.Join(" ", grid.SelectedRow.CssClass, "AdminRowSelected");
}
可能有更好的方法来做我想做的事吗?
无论如何,当我的 gridview 第一次渲染时,我的行有很好的类。但是当我选择一行并输入 SUPResultList_SelectedIndexChanged 时,row.CssClass 是空的(因此 row.CssClass.Replace("AdminRowSelected", String.Empty) 的结果是 "" 和 String.Join(" ", grid.SelectedRow。 CssClass, "AdminRowSelected"); 是 "AdminRowSelected")。处理后,我失去了原来的班级,行变成白色(选定行除外)。
我也试过这个而不是我的循环,但它也失败了:
grid.RowStyle.CssClass = "DataGridItem";
grid.AlternatingRowStyle.CssClass = "DataGridAlternateItem";
你知道发生了什么(以及如何纠正它^^)吗?
提前致谢 !