2017-04-06 78 views
0

我正在研究asp.net webforms C#gridview。它是一個嵌套的gridview。每個子網格將只有兩行。每個子網格的第二行將在最後一列有一個動作按鈕。到目前爲止,我已經完成,一切工作正常。根據數據類型的不同,我必須在底部的一些子行上添加四個按鈕。我的整個子網格動態創建並添加到父網格。子網格有六個列,我將它們創建爲一個綁定字段,並將文本設置爲一個值或向第六列添加一個按鈕。如果需要,我可以將它們更改爲模板字段。我不確定是否可以使用模板字段的頁腳添加四個按鈕。如何動態地在asp.net gridview行的底部添加按鈕

感謝

回答

0

有一點信息去,但因爲你的狀態,你創建嵌套網格動態,我認爲你所熟悉的RowDataBound事件。您也可以使用它來添加按鈕。在這個片段中我添加的按鈕到尾行,所以你必須能夠在網格嵌套該行:ShowFooter="true"

bool primary = false; 

protected void NestedGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the current row is a datarow or a footer row 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (column == value) 
     { 
      primary = true; 
     } 
    } 
    else if (e.Row.RowType == DataControlRowType.Footer && primary == true) 
    { 
     //create 4 buttons in a loop 
     for (int i = 0; i < 4; i++) 
     { 
      //create a new button 
      Button button = new Button(); 
      button.Text = "Button " + (i + 1); 

      //add a click handler to the button 
      button.Click += Button1_Click; 

      //add the button to the footer row 
      e.Row.Cells[i].Controls.Add(button); 
     } 
    } 
} 

因爲要動態添加控件到GridView,綁定對每個頁面負載發生,因此移動if (!Page.IsPostBack) { }檢查之外的數據綁定。

+0

謝謝。這是我要走的路線。但我不知道如何動態創建和添加頁腳行。簡單地做gvChild.ShowFooter = true不起作用。 – Massey

+0

你不需要添加一個,它已經在那裏(雖然沒有使用動態創建的網格進行測試)。但是你不需要使用頁腳,如果你知道嵌套網格中的行數,你也可以使用'DataControlRowType.DataRow'並添加按鈕,如果它是最後一行的話。 – VDWWD

+0

你說得對。現在我看到了頁腳。只有當DataRow中的字段值等於「Primary」時,我才必須將按鈕添加到頁腳。問題是,當我在if(e.RowTypeRowType == DataControlRowType.Footer)時,我無法訪問DataRow中的值。無論如何,如何做到這一點?謝謝 – Massey

相關問題