在交替的彩色行gridview中选择整行

时间:2009-03-20 17:23:55

标签: asp.net gridview row highlighting

我有一个具有交替行颜色的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>

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

此外,是否有人能够帮助我找到突出显示哪一行,服务器端?像选择一样。

1 个答案:

答案 0 :(得分: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;
                }
            }
        }
    }