2010-05-11 78 views
1

我在我的asp.net頁面中有自動生成字段的GridView控件 只有頁腳模板存在於asp:TemplateField下。從GridView訪問動態添加控件頁腳行

我可以綁定這個gridview任何數據庫表作爲取決於用戶 選擇。現在想要在數據庫中添加新記錄,因此我在運行時在頁腳模板單元格上添加了文本 ,具體取決於表上的列數 。但是,當我從gridview_RowCommand事件中的頁腳模板 訪問這些文本框時,它不會檢索文本框控件。

這是代碼:

SGridView.ShowFooter = True 
    For i As Integer = 0 To ctrList.Count 
     Dim ctr As Control = CType(ctrList.Item(i), Control) 
     SGridView.FooterRow.Cells(i + 1).Controls.Add(ctr) 
    Next 

的ctrList包含控制文本框複選框dropdowlist等。

有一切ok

但當我不會讓我不能投在rowcommand事件的控件的控件中的文本或值或檢查值

下面是代碼:

如果e.CommandName =「Add」然後

Dim ctrList As ControlCollection = SGridView.FooterRow.Controls 

    For Each ctr As Control In ctrList 

     If TypeOf ctr Is TextBox Then 
      Dim name As TextBox = CType(ctr, TextBox) 
      Dim val As String = name.Text 
     End If 
    Next 
End If 

這個excample是用於textBox控件的。

Plese建議我如何獲得頁腳控制文本框。這樣我就可以將數據保存在數據庫中。

回答

2

嘗試在Grdiview的RowCreated事件中創建控件,該事件將在每次Postback中引發。

Private Sub Grid1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles Grid1.RowCreated 
     Select Case e.Row.RowType 
      Case DataControlRowType.Footer 
      'add controls to row 
     End Select 
    End Sub 
3

當你在處理動態控件時,你必須密切關注。網頁生命週期爲

控制數據綁定在Load事件中,所以當您在Load事件中進行控制生成時,您無法訪問該事件中的回發數據。我平時嘗試在頁面初始化中創建動態控件,並對LoadComplete或PreRender事件進行任何值處理,以便在嘗試閱讀它們之前確保它們已從回發中接收到它們的值。

查看ASP.NET page lifecycle事件的完整說明以及正在發生的事情。這應該有助於您瀏覽創建和使用動態生成的控件。

+0

我在PageInit中添加了頁腳的創建,但問題沒有解決。 – 2010-05-12 08:46:43

+0

您是否嘗試將控件值的訪問權移動到稍後的頁面加載? – 2010-05-12 17:25:20