【问题标题】:Creating a header row with buttons in a Custom GridView在自定义 GridView 中创建带有按钮的标题行
【发布时间】:2009-02-05 19:15:26
【问题描述】:

发布后: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);
}

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

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

    void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
      {
    
        if(e.Row.RowType == DataControlRowType.Header)
          {
             ...your code here
    
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多