Динамически созданная LinkButton не запускает никаких событий - PullRequest
0 голосов
/ 08 апреля 2010

Я настраиваю заголовки группы в 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), но, похоже, никто не получил удар.

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

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2010

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

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

Ужасно, но это работает.

...