2010-04-08 6 views
0

Je personnalise les en-têtes de groupe sur un Telerik RadGrid en y injectant un LinkButton pendant l'événement ItemDataBound. Le bouton est parfaitement rendu, mais je n'arrive pas à le faire toucher les gestionnaires d'événements.LinkButton créé dynamiquement ne déclenche aucun événement

Voici le code de la création de boutons:

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 

Ce code ajoute explicitement un gestionnaire pour l'LinkButton, mais ce gestionnaire est jamais touché. J'ai également essayé des événements sur le RadGrid (ItemCommand, ItemEvent) mais aucun ne semble être touché.

Quelqu'un at-il des suggestions d'autres événements à essayer, ou des façons de faire ce travail?

Merci!

+0

vous pouvez vous cellclick événement qui peut travailler pour cela.juste vérifier l'en-tête de la colonne et passer l'identifiant de la ligne. –

Répondre

0

Je n'ai pas été capable de trouver une "bonne" solution à cela. En fin de compte, je l'ai fait ce qui suit:

  1. Créé le bouton dans le gestionnaire d'événements ItemCreated , la mise en son CommandArgument à un compteur qui a été incrémenté pour chaque tête de groupe créé
  2. Encore une fois créé le bouton dans la événement ItemDataBound, à nouveau les paramètres son CommandArgument à la valeur compteur . À ce stade, j'ai ajouté un enregistrement à un objet de dictionnaire (stocké dans ViewState) reliant le compteur à la valeur réelle du groupe .
  3. Géré l'événement de clic du bouton , l'extraction de la valeur de groupe du dictionnaire dans viewstate à terminer le traitement.

Laide, mais cela fonctionne.

Questions connexes