2010-05-11 42 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