2010-04-08 97 views
0

我正在通過在ItemDataBound事件期間向其注入LinkBut​​ton來定製Telerik RadGrid上的組頭。按鈕呈現完美,但我無法讓它擊中任何事件處理程序。動態創建的LinkBut​​ton不會觸發任何事件

下面是創建按鈕的代碼:

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 

此代碼明確地增加了對LinkBut​​ton的處理程序,但處理程序從不打。我也嘗試過RadGrid(ItemCommand,ItemEvent)上的事件,但似乎沒有人受到影響。

有沒有人有任何其他事件的建議嘗試,或使其工作?

謝謝!

+0

你可以cellclick事件,它可以爲它工作。只是檢查列的標題和傳遞行ID。 – 2010-04-15 10:53:23

回答

0

我無法找到一個「很好」的解決方案。最後,我做了以下:

  1. 創建在 ItemCreated事件處理程序中的按鈕時,其CommandArgument設置 給計數器 其遞增創建的每個 組頭
  2. 在再次創建的按鈕 ItemDataBound事件,再次將其CommandArgument設置爲 以計數器 的值。在這一點上,我添加了一個 記錄到一個字典對象 (存儲在ViewState中)鏈接 計數器與 組的實際值。
  3. 處理了 按鈕的單擊事件,從視圖狀態字典中提取組值 到 完成處理。

醜,但它的作品。

相關問題