Как указать классы CSS для определенных строк в GridView? - PullRequest
10 голосов
/ 06 марта 2010

Я создаю веб-часть SharePoint на C #, и часть ее выводит на страницу элемент управления GridView.Хотя я могу получить довольно обширный контроль над тем, как он отображается, установив класс CSS самого GridView, я действительно хотел бы иметь возможность указывать классы для определенных конкретных элементов td.Я не уверен, как это сделать, или если это будет сделано во время заполнения GridView строками или когда GridView добавляется на страницу.

В псевдокодето, что я, по сути, предполагал, было в состоянии сказать что-то вроде gridView.Row[4].CssClass = "header", что установило бы td пятой строки в GridView для класса "header".

Я рассмотрел использованиеСобытие RowDataBound, поэтому я просто использовал следующее для его проверки:

protected void outputGrid1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.CssClass = "outputHeader";
}

Это, вероятно, мое неправильное понимание того, как правильно его использовать, но, похоже, оно ничего не делает.Я думал, что для всех строк будет установлен класс «заголовок», и если это так, я собирался отработать свою логику оттуда, но я даже не могу заставить это работать.Спасибо за любую помощь, которую может предоставить любой!

1 Ответ

18 голосов
/ 06 марта 2010

Я делаю нечто подобное с RowDataBound:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    // Check the XXXX column - if empty, the YYYY needs highlighting!
    if (e.Row.Cells[6].Text == " ")
    {
       e.Row.CssClass = "highlightRow"; // ...so highlight it
    }
}

Один из способов проверить, что вы делаете правильно, - это контролировать вывод html через браузер ... что-то вроде Firebug действительно помогает.

Вот несколько примеров CSS, где мы назначаем CssClass 'dataGrid' для Grid:

/* Used to highlight rows */
table.dataGrid tr.highlightRow td
{
    background-color: #FF6666;
    border-bottom: 1px solid #C0C0FF;
}

Обновление: Подключение всего этого: я использую автоподключение на странице aspx. Объявление вашей страницы выглядит примерно так:

<%@ Page Language="C#" MasterPageFile="~/XXXXXX.master" AutoEventWireup="true" CodeBehind="YYYY.aspx.cs" Inherits="ZZZ.ZZZ.AAAAAA" Title="View Blah" %>

Этот параметр на странице позволяет использовать пользовательский интерфейс для подключения событий. Щелкните по сетке, выберите свойства, щелкните значок молнии и под событием RowDataBound выберите свой метод. Все, что происходит за кулисами, это добавляет атрибут в DataGridView, таким образом:

        <asp:GridView ID="uiActionGridView" runat="server" AllowSorting="True" AutoGenerateColumns="False"
        OnRowDataBound="uiActionGridView_RowDataBound" OnDataBound="uiActionGridView_DataBound">
  • это показывает, что два события подключены, события DataBound и RowDataBound.

Это то, что я делаю с использованием VS2005, и все это, кажется, «просто работает». Единственное, что, как я думаю, вы испытываете, - это то, что вы вручную связываете событие после , когда произошла привязка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...