开发者

Accessing dynamically added control from GridView Footer row

I have GridView control in my asp.net page with auto generated fields there is only footer template is present under asp:TemplateField.

I can bind this gridview with any of databae table as depend on user selection. Now want to add new record in database so I have added text boxes on footer template cells at runtime depend on number of columns on table. But when I accessing these text boxes from footer template on gridview_RowCommand event its not retriving textbox control.

this is the code:

   SGridView.ShowFooter = True
    For i As Integer = 0 To ctrList.Count
        Dim ctr As Control = CType(ctrList.Item(开发者_如何学JAVAi), Control)
        SGridView.FooterRow.Cells(i + 1).Controls.Add(ctr)
    Next

the ctrList contain Controls textBox, checkbox dropdowlist ect.

there is all ok

but when i wont to get the text or value or checked value of controls i can't cast the controls in rowcommand event

Here is the code:

If e.CommandName = "Add" Then

    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

this excample is for the textBox control.

Plese suggest me how can I get footer control textboxes. So that I can

save data in database.


When you are dealing with Dynamic controls you have to keep a close eye on the .net page lifecycle.

Control data is bound in the Load event, so your not able to access postback data in that event when your doing your conrol generation in the Load event too. I usualy try to create dynamic controls in the Init of the page, and do any values processing on the LoadComplete or PreRender event so I can make sure they have recieved their values from the postback before you try to read them.

Take a look at the full description of the ASP.NET page lifecycle events and whats going on. This should help you navigate the creation and use of Dynamic generated controls.


Try to create your Controls in the Grdiview's RowCreated Event which will be raised on every 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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜