0

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

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

提前致谢 !

4

1 回答 1

2

你试过SelectedRowStyle吗?

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedrowstyle.aspx

于 2013-08-07T15:27:08.867 回答