使用Custom GridView中的按钮创建标题行

时间:2009-02-05 19:15:26

标签: c# asp.net gridview

发布后:Custom Header in GridView

......我有一个相关的问题。我在OnDataBound期间添加了表行,并且显示,链接是可点击的。在这里添加它有两个问题:首先,如果发生不是DataBind的回发,则该行消失;第二,单击LinkBut​​tons时不会发生任何事件。这是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 个答案:

答案 0 :(得分:2)

您可以尝试将其放入RowCreated事件中,同时创建标头。这也可能解决LinkBut​​tons无法正常工作的问题。

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
  {

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

      }