0

ItemDataBoundイベント中にLinkBut​​tonを挿入することにより、TelerikRadGridのグループヘッダーをカスタマイズしています。ボタンは完全にレンダリングされますが、イベントハンドラーをヒットさせることができません。

ボタンを作成するためのコードは次のとおりです。

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)でイベントも試しましたが、ヒットするものはないようです。

誰かが試すべき他のイベントの提案、またはこれを機能させる方法を持っていますか?

ありがとう!

4

1 に答える 1

1

これに対する「いい」解決策を見つけることができませんでした。最後に、私は次のことを行いました:

  1. ItemCreated イベント ハンドラーでボタンを作成し、その CommandArgument を、グループ ヘッダーが作成されるたびにインクリメントされるカウンターに設定します。
  2. 再び ItemDataBound イベントでボタンを作成し、その CommandArgument をカウンター値に再度設定します。この時点で、カウンターをグループの実際の値にリンクするディクショナリ オブジェクト (ViewState に格納されている) にレコードを追加しました。
  3. ボタンのクリック イベントを処理し、viewstate のディクショナリからグループ値を抽出して処理を完了しました。

醜いですが、うまくいきます。

于 2010-04-19T06:26:50.003 に答える