2009-02-05 125 views
1

發佈之後:Custom Header in GridView創建帶有按鈕的標題行中自定義的GridView

...我有一個相關的問題。我在OnDataBound中添加了表格行,並且顯示出來,這些鏈接是可點擊的。在這裏添加它有兩個問題:首先,如果發生的回發不是DataBind,則該行將消失;其次,單擊LinkBut​​ton時不會發生任何事件。這裏是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); 
} 

回答

2

您可以嘗試將它放在RowCreated Event中,同時創建標題。這也可能解決您的問題,LinkBut​​tons無法正常工作。

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e) 
    { 

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

     } 
相關問題