2

我有一个具有交替行颜色的 Gridview,并且希望在单击该行的任意位置时突出显示该行。不幸的是,我找到并正在使用的代码将较深的颜色阴影应用于先前单击的行。例如,如果在 4 行 gridview 中,2 和 4 是银色阴影,而其他 2 是白色。如果我单击第 1 行,然后单击第 4 行,第 1 行现在是银色阴影。如果我单击任何其他行,也会发生这种情况。这是我的代码:

protected void CCAGridView_OnRowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
            e.Row.Attributes.Add("onclick", "HilightRow(this)");
    }

<asp:GridView ID="GridView" runat="server"  HeaderStyle-Width="200" HeaderStyle-BackColor="#2B6292" HeaderStyle-ForeColor="White" 
    AllowSorting="true" AllowPaging="true" Width="600" AutoGenerateColumns="False" OnRowCreated="GridView_OnRowCreated" 
    DataKeyNames="Id" AlternatingRowStyle-BackColor="Silver" BorderColor="#2B6292" BorderWidth="1" BorderStyle="solid">
        <Columns>
         ...
        </Columns>
    </asp:GridView>

任何帮助,将不胜感激。谢谢。

另外,谁能帮我找到突出显示的行,服务器端?就像一个选择。

4

1 回答 1

0

好吧,假设您知道主键,我可以帮助您找到选定的行。在您的 RowDataBound 事件中,您可以获得 DataItem(将其转换为真实类型),然后将其与您正在寻找的值进行比较(然后突出显示它)。我不得不关闭alternatingRowSTyle 才能完成这项工作。对此了解不多。

protected void Page_Load(object sender, EventArgs e) { GridViewCompany.AlternatingRowStyle.Reset(); GridViewCompany.SelectedRowStyle.Reset(); }

    protected void GridViewCompany_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int selectedCompanId = Convert.ToInt32(StateService.I.Get(CookieIdType.CompanySelected));
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var userResult = e.Row.DataItem as CompanyResult;
            if (userResult != null)
            {
                if (userResult.Id == selectedCompanId)
                {
                    e.Row.BackColor = Color.LightGray;
                }
            }
        }
    }
于 2009-04-01T19:29:45.217 回答