Доступ к динамически добавленному элементу управления из строки нижнего колонтитула GridView - PullRequest
1 голос
/ 11 мая 2010

У меня есть контроль GridView на моей странице asp.net с автоматически сгенерированными полями в asp: TemplateField присутствует только шаблон нижнего колонтитула.

Я могу связать эту сетку с любой таблицей данных, в зависимости от пользователя. выбор. Теперь хочу добавить новую запись в базу данных, поэтому я добавил текст поля в ячейках шаблона нижнего колонтитула во время выполнения зависят от количества столбцов на столе. Но когда я получаю доступ к этим текстовым полям из шаблона нижнего колонтитула для события 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 содержит элементы управления textBox, флажок dropdowlist и т. Д.

там все ок

но когда я не могу получить текст или значение или проверенное значение элементов управления, я не могу привести элементы в событие rowcommand

Вот код:

Если e.CommandName = "Добавить", то

    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

этот пример предназначен для элемента управления textBox.

Пожалуйста, предложите мне, как я могу получить текстовые поля управления нижним колонтитулом. Так что я могу
сохранить данные в базе данных.

Ответы [ 2 ]

3 голосов
/ 12 мая 2010

Когда вы имеете дело с динамическими элементами управления, вы должны внимательно следить за жизненным циклом. net page.

Управляющие данные связаны в событии Load, поэтому вы не сможете получить доступ к данным обратной передачи в этом событии, когда вы выполняете генерацию conrol в событии Load. Обычно я пытаюсь создать динамические элементы управления в Init страницы и выполнить любую обработку значений в событии LoadComplete или PreRender, чтобы я мог убедиться, что они получили свои значения из обратной передачи, прежде чем пытаться их прочитать.

Взгляните на полное описание событий жизненного цикла страницы ASP.NET и событий. Это должно помочь вам ориентироваться в создании и использовании динамически генерируемых элементов управления.

2 голосов
/ 12 мая 2010

Попробуйте создать свои элементы управления в событии RowCreated Grdiview, которое будет вызываться при каждой обратной передаче.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...