我的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";
你知道发生了什么(以及如何纠正它^^)?
提前致谢!
答案 0 :(得分:2)
您是否尝试过SelectedRowStyle
?
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedrowstyle.aspx