vb.net программно добавляет кнопку ссылки в сетку данных - событие клика не запускается - PullRequest
0 голосов
/ 28 октября 2011

У меня есть сетка данных, где я программно добавляю кнопку ссылки на ItemDataBound.

Protected Sub dgCounts_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgCounts.ItemDataBound

            For i As Integer = 1 To (e.Item.Cells.Count - 1)

                Dim lb As New LinkButton
                lb.CommandArgument = aryDealers(i)
                lb.Text = e.Item.Cells(i).Text
                lb.CausesValidation = False
                AddHandler lb.Click, AddressOf lb_Click

                If e.Item.Cells(i).Text.Trim.Length > 0 Then
                    e.Item.Cells(i).Controls.Add(lb)
                End If

            Next
End Sub

Protected Sub lb_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lb As LinkButton = CType(sender, LinkButton)
        Dim s As String = lb.CommandArgument
End Sub

Кнопка ссылки правильно добавляет в ячейки сетки, но когда вы щелкаете, событие не срабатывает.

Мысли? Спасибо!

1 Ответ

1 голос
/ 28 октября 2011

Не следует динамически добавлять элементы управления в событие ItemDataBound объекта DataGrid (или RowDataBound -Event объекта GridView). ItemDataBound срабатывает только тогда, когда вы привязываете DataGrid к его DataSource. Если вы включили ViewState и привязали данные только в случае, если Not Page.IsPostback, элемент управления не будет воссоздан на обратных передачах. Поэтому никакие события не инициируются.

Вместо этого следует использовать ItemCreated (RowCreated в GridView) для динамического создания элементов управления, поскольку ItemCreated вызывается при каждой обратной передаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...