添加和删​​除CssClass ASP.NET

时间:2013-08-07 15:21:57

标签: c# asp.net

我的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";

你知道发生了什么(以及如何纠正它^^)?

提前致谢!

1 个答案:

答案 0 :(得分:2)