2005.06.03

Repeaterの使い方 ~テキストチェンジ~

Repeaterの中にTextBox項目があり、
その項目を利用してイベントをおこしたいと思った事ありませんか?

buttonと同じ要領で
Repeater内にOnItemCommandを設定して、
TextBoxにAutoPostBack="True"を設定する。

これで出来そうですが、実はできません。
OnItemCommandではbuttonのイベントしかひろってくれないので
以下のやり方を行います。

1:ItemDataBoundでテキストチェンジイベント発生時にダミーボタンを押す
  というJavaScript作成を行う。

2:テキストチェンジイベントが行われダミーボタンが押されたら
   Private Sub Myrpt(ByVal sender As System.Object, ByVal e As RepeaterCommandEventArgs)
にテキストチェンジが行われた後の処理を書く。

これでRepeater内のテキストチェンジイベントも実行できます。

コメント (2)

お久しぶりです。参考にさせて貰ってます。
他の方法も浮かんだので、記述させて貰います。

1.Repeater内のイベントを発生させたいTextBoxを定義
<asp:TextBox ID="TextBox1" Runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>

2.インスタンスを参照させる
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

3.イベントを記述する
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
  Dim wk As String = CType(sender, TextBox).ClientID
End Sub

と、RepeaterのItemCommandに拘らなければこのような手法もあります。
ご参考程度に如何でしょう。

obamaさん、ほんとにお久しぶりです!
コメントありがとうございます。
JavaScriptに頼らない分、こちらのほうがスマートですね。
かつ、.NETとしては正しいように思います。
早速参考にさせていただきます。ありがとうございました。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ntakayama