动态创建的LinkBut​​ton不会触发任何事件

时间:2010-04-08 09:03:40

标签: events radgrid linkbutton

我通过在ItemDataBound事件期间向其中注入LinkBut​​ton来自定义Telerik RadGrid上的Group Headers。按钮呈现完美,但我无法让它击中任何事件处理程序。

以下是按钮创建的代码:

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),但似乎都没有被击中。

有没有人对其他事件有什么建议可以尝试,或者有什么方法可以让它发挥作用?

谢谢!

1 个答案:

答案 0 :(得分:0)

我无法找到一个“好”的解决方案。最后我做了以下几点:

  1. 创建了按钮 ItemCreated事件处理程序,设置 它的CommandArgument到一个柜台 每增加一个 组标题已创建
  2. 再次创建了按钮 ItemDataBound事件,再次设置 它的CommandArgument到柜台 值。此时我添加了一个 记录到字典对象 (存储在ViewState中)链接 反对的实际价值 基。
  3. 处理了点击事件 按钮,提取组值 从viewstate中的字典 完成处理。
  4. 丑陋,但确实有效。