- PR -

[ASP.NET] 独自のWebコントロールにOnClickイベントの追加

1
投稿者投稿内容
うきょきょ
常連さん
会議室デビュー日: 2004/01/09
投稿数: 44
投稿日時: 2006-02-17 09:59
こんにちは、うきょきょです。

現在ASP.NET 2.0+VB.NETで開発しています。
WebControlを継承して、OnClickイベントを追加しようと思っているのですが、
カスタムコントロールの設定方法がわかりません。

下記の方法でコントロールのポストバックは実行できると思うのですが、
コントロール内でRaiseEventを行うタイミングがわかりません。

よろしくお願いします。

[コントロール実装方法]
1.RenderContentsメソッドをオーバーライドして、HTML化させる
2.HTML化させたときに追加した"div"要素に"OnClick"を追加し、
 "document.forms[0].submit();"を設定する。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-02-17 10:39
ポストバックのためのクライアント側スクリプトの生成
ポストバック イベントのキャプチャ
うきょきょ
常連さん
会議室デビュー日: 2004/01/09
投稿数: 44
投稿日時: 2006-02-17 12:12
ありがとうございます。
教えていただいた所を参考に、実装できました。

ASP.NET 2.0では"Page.GetPostBackEventReference"は非推奨になっていて、
"Page.ClientScript.GetPostBackEventReference"を使うとの事でした。

コード:

・コントロールのRenderContentsメソッド内
.WriteAttribute("onclick", Page.ClientScript.GetPostBackEventReference(Me, Row.ToString))
#Rowは内部変数です。

・コントロールクラス内
' イベント
Public Delegate Sub RowEventHandler(ByVal sender As Object, ByVal e As RowEventArgs)
Public Event RowClick As RowEventHandler
Protected Overridable Sub OnRowClick(ByVal e As EventArgs)
RaiseEvent RowClick(Me, e)
End Sub
Public Sub RaisePostBackEvent(ByVal eventArgument As String) _
Implements IPostBackEventHandler.RaisePostBackEvent
OnRowClick(New RowEventArgs(CInt(eventArgument)))
End Sub

・コントロールと同じNamespace内
Public Class RowEventArgs
Inherits EventArgs

Private FRow As Integer
Public ReadOnly Property Row() As Integer
Get
Return FRow
End Get
End Property

Public Sub New(ByVal Row As Integer)
FRow = Row
End Sub
End Class

・コントロールを使用している*.aspx.vb内
Protected Sub <コントロール名>_RowClick(ByVal sender As Object, ByVal e As RowEventArgs) Handles <コントロール名>.RowClick
e.Row.ToString()
End Sub



#06/02/17 12:20(編集):イベントハンドラをデリゲート


[ メッセージ編集済み 編集者: うきょきょ 編集日時 2006-02-17 12:25 ]
1

スキルアップ/キャリアアップ(JOB@IT)