C# 在自定义GridView中创建带有按钮的标题行

C# 在自定义GridView中创建带有按钮的标题行,c#,asp.net,gridview,C#,Asp.net,Gridview,发布此邮件后: …我有一个相关的问题。我在OnDataBound中添加了表行,它显示出来了,链接是可点击的。在这里添加它有两个问题:第一,如果发生了不进行数据绑定的回发,该行将消失;其次,单击链接按钮时没有发生任何事件。以下是OnDataBound代码: protected override void OnDataBound(EventArgs e) { base.OnDataBound(e); // Hook up the handler to create the Sel

发布此邮件后:

…我有一个相关的问题。我在OnDataBound中添加了表行,它显示出来了,链接是可点击的。在这里添加它有两个问题:第一,如果发生了不进行数据绑定的回发,该行将消失;其次,单击链接按钮时没有发生任何事件。以下是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);
}

可以尝试在创建标头时将其放入RowCreated事件中。这也可以解决链接按钮不工作的问题

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
  {

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

      }