2010-04-08 3 views
0

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

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

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), но никто, похоже, не попал.

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

Спасибо!

+0

вы можете использовать событие cellclick, которое может работать для него. Просто проверьте заголовок столбца и передайте идентификатор строки. –

ответ

0

Мне не удалось найти «приятное» решение. В конце концов, я сделал следующее:

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

Уродливый, но он работает.

Смежные вопросы