views:

525

answers:

2

Hi,

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(i), 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.

+1  A: 

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.

Tj Kellie
I have added the creation of footer at PageInit, but the problem is not solved.
Haroldis
Did you try moving the access of the control value into a later even than the page load?
Tj Kellie
A: 

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
Tim Schmelter