asp.net динамически добавляет GridViewRow - PullRequest
9 голосов
/ 02 января 2012

Я посмотрел этот пост Как программно вставить строку в GridView? , но я не могу добавить строку, я попробовал ее на RowDataBound, а затем событие DataBound, но оба не работают, вот мой код, если кто-то может показать мне, как динамически добавлять строку в конец GridView, а не нижний колонтитул, что было бы здорово в любом случае, вот мой код, который не работает

protected void CustomGridView_DataBound(object sender, EventArgs e)
{
    int count = ((GridView)sender).Rows.Count;
    GridViewRow row = new GridViewRow(count+1, -1, DataControlRowType.DataRow, DataControlRowState.Insert);
    //lblCount.Text = count.ToString();
    // count is correct
    // row.Cells[0].Controls.Add(new Button { Text="Insert" });
    // Error Here adding Button 
    Table table = (Table)((GridView)sender).Rows[0].Parent;
    table.Rows.Add(row);
    // table doesn't add row          
}

1 Ответ

9 голосов
/ 06 января 2012

Используя событие RowDataBound, добавьте любой элемент управления в TableCell, а TableCell - в GridViewRow.Наконец, добавьте GridViewRow к GridView по указанному индексу:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    GridViewRow row = new GridViewRow(e.Row.RowIndex+1, -1, DataControlRowType.DataRow, DataControlRowState.Insert); 
    TableCell cell = new TableCell();
    cell.ColumnSpan = some_span;
    cell.HorizontalAlign = HorizontalAlign.Left;

    Control c = new Control(); // some control
    cell.Controls.Add(c);
    row.Cells.Add(cell);

    ((GridView)sender).Controls[0].Controls.AddAt(some_index, row);
} 

Возможно, это не совсем то, что вам нужно, но это должно дать вам представление.

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