Динамически созданный LinkButton не запускает никаких событий

Я настраиваю заголовки групп в Telerik RadGrid, вводя в него LinkButton во время события ItemDataBound. Кнопка отображается отлично, но я не могу заставить ее поразить какие-либо обработчики событий.

Вот код создания кнопки:

Private Sub rgWorkRequestItemCosts_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles rgWorkRequestItemCosts.ItemDataBound

        If TypeOf e.Item Is GridGroupHeaderItem Then

            Dim oItem As GridGroupHeaderItem = DirectCast(e.Item, GridGroupHeaderItem)
            Dim lnkAdd As New LinkButton()
            lnkAdd.ID = "lnkAdd"
            lnkAdd.CommandName = "CustomAddWorkRequestItemCost"
            lnkAdd.CommandArgument = DirectCast(oItem.DataItem, DataRowView).Row("nWorkRequestItemID").ToString()
            lnkAdd.Text = String.Format("<img style=""border:0px"" alt="""" width=""12"" src=""{0}"" /> Add new cost", ResolveUrl(String.Format("~/App_Themes/{0}/Grid/AddRecord.gif", Page.Theme)))
            lnkAdd.Style("color") = "#000000"
            lnkAdd.Style("text-decoration") = "none"
            AddHandler lnkAdd.Click, AddressOf lnkAdd_Click
            Dim tcPlaceholder As GridTableCell = DirectCast(oItem.Controls(1), GridTableCell)
            Dim litText As New LiteralControl(String.Format("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{0}", tcPlaceholder.Text))
            tcPlaceholder.Text = String.Empty
            tcPlaceholder.Controls.Add(lnkAdd)
            tcPlaceholder.Controls.Add(litText)
     End If
End Sub

Этот код явно добавляет обработчик для LinkButton, но этот обработчик никогда не срабатывает. Я также пробовал события в RadGrid (ItemCommand, ItemEvent), но, похоже, ни одно из них не попало.

Есть ли у кого-нибудь какие-либо предложения о других событиях, которые можно попробовать, или способы заставить эту работу работать?

Спасибо!


person Brent Wheeldon    schedule 08.04.2010    source источник
comment
вы можете использовать событие cellclick, которое может сработать для него. Просто проверьте заголовок столбца и передайте идентификатор строки.   -  person Emaad Ali    schedule 15.04.2010


Ответы (1)


Я не смог найти «хорошее» решение для этого. В итоге я сделал следующее:

  1. Создал кнопку в обработчике событий ItemCreated, установив для ее CommandArgument счетчик, который увеличивался для каждого созданного заголовка группы.
  2. Снова создал кнопку в событии ItemDataBound, снова задав для ее CommandArgument значение счетчика. В этот момент я добавил запись в объект словаря (хранящийся в ViewState), связывающий счетчик с фактическим значением группы.
  3. Обрабатывается событие нажатия кнопки, извлекая значение группы из словаря в состоянии представления для завершения обработки.

Некрасиво, но работает.

person Brent Wheeldon    schedule 19.04.2010