Выделение всей строки в сетке чередующихся цветных строк - PullRequest
2 голосов
/ 20 марта 2009

У меня есть Gridview с чередующимися цветами строк, и я хочу выделить строку, когда ее щелкнуть в любом месте этой строки. К сожалению, код, который я нашел и использую, применяет более темный оттенок к ранее нажатой строке. Например, если из 4-х рядного вида сетки, 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 голосов
/ 01 апреля 2009

Ну, я могу помочь с тем, как найти выбранную строку, если вы знаете первичный ключ. В вашем событии RowDataBound вы можете получить DataItem (привести его к реальному типу), а затем сравнить его со значением, которое вы ищете (затем выделите его). Мне пришлось отключить переменный RowSTyle, чтобы сделать эту работу. Не знаю много об этом.

защищенный void Page_Load (отправитель объекта, 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;
                }
            }
        }
    }
...