Создание строки заголовка с кнопками в пользовательском GridView - PullRequest
1 голос
/ 05 февраля 2009

После публикации: Пользовательский заголовок в GridView

... У меня есть связанная проблема. Я добавил строку таблицы во время OnDataBound, и она показывает, что ссылки кликабельны. Есть две проблемы с его добавлением: во-первых, если происходит обратная передача без DataBind, строка исчезает; во-вторых, при нажатии на кнопки LinkButton никаких событий не происходит. Вот код OnDataBound:


protected override void OnDataBound(EventArgs e)
{
    base.OnDataBound(e);

    // Hook up the handler to create the Selection header/footer

    // TODO: Wrap this in a function sometime
    Table table = (Table)Controls[0];
    GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);

    // TODO: should add css classes
    TableHeaderCell cell = new TableHeaderCell();
    cell.ColumnSpan = Columns.Count + 1; // plus 1 for the checkbox column
    cell.HorizontalAlign = HorizontalAlign.Left; // do this or css?

    HtmlGenericControl label = new HtmlGenericControl("label");
    label.InnerText = "Select:";

    selectNoneLK = new LinkButton();
    selectNoneLK.ID = "SelectNoneLK";
    selectNoneLK.Text = "None";
    selectNoneLK.Click += SelectNoneLK_Click;
    //selectNoneLK.CommandName = "SelectNone";
    //selectNoneLK.Command += SelectNoneLK_Click;

    selectAllLK = new LinkButton();
    selectAllLK.ID = "SelectAllLK";
    selectAllLK.Text = "All on this page";
    //selectAllLK.CommandName = "SelectAll";
    //selectAllLK.Command += SelectAllLK_Click;
    selectAllLK.Click += SelectAllLK_Click;

    cell.Controls.Add(label);
    cell.Controls.Add(selectNoneLK);
    cell.Controls.Add(selectAllLK);

    row.Controls.Add(cell);

    // Find out where to put this row

    int rowIndex = 0;
    if(SelectionMode == SelectionMode.AboveHeader)
    {
        rowIndex = 0;
    }
    else if(SelectionMode == SelectionMode.BelowHeader)
    {
        rowIndex = 1;
    }
    else if(SelectionMode == SelectionMode.AboveFooter)
    {
        rowIndex = table.Rows.Count;
    }
    else if(SelectionMode == SelectionMode.BelowFooter)
    {
        rowIndex = table.Rows.Count + 1;
    }

    table.Rows.AddAt(rowIndex, row);
}

1 Ответ

2 голосов
/ 11 февраля 2009

Вы можете попробовать поместить его в событие RowCreated, пока создается заголовок. Это также может решить вашу проблему с неработающими кнопками LinkButtons.

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
  {

    if(e.Row.RowType == DataControlRowType.Header)
      {
         ...your code here

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