- - PR -
DataGrid内のTextBoxなどのイベント取得方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-09-26 16:43
いつも拝見させていただいております。
DataGrid内に作成したTextBoxのイベントは取得できないでしょうか? やりたいことは、DataGrid内にTextBox1とTextBox2を用意します。 TextBox1に値が入力され、フォーカスが移動したときにデータベースへ アクセスしその結果をTextBox2にセットする。 どなたかご教授の程よろしくお願い致します。 | ||||
|
投稿日時: 2002-09-26 18:55
WebFormsでしょうか?WindowsFormsでしょうか?。
WebFormsの場合には無理だと思います。おそらく(苦笑)。 _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- | ||||
|
投稿日時: 2002-09-27 01:16
WebFormでもAutoPostBackを使えばできると思いますよ。
AutoPostBack="True"にし、TextChangedイベントを使用すればできるはずです。 ただ、DataGrid内でTextChangedイベントを使ったことは無いので断言はできません。 | ||||
|
投稿日時: 2002-09-27 05:30
>WebFormでもAutoPostBackを使えばできると思いますよ。
>AutoPostBack="True"にし、TextChangedイベントを使用すればできるはずです。 >ただ、DataGrid内でTextChangedイベントを使ったことは無いので断言はできません。 実現すると確かに便利な機能だと思いますが、正直動きませんでした。 そもそもバウンドカラムではコントロールがサーバーによって生成されるため、 イベントそのものをどう設定してやればよいかわかりませんでした。 次にテンプレートカラムで試してみましたが、テキストボックスに イベントを設定したところ、ページそのものの生成でエラーが 発生してしまいました。 どなたか、うまくいったという方がおられれば是非教えてください。 ところで、単にデータの検索結果をテキストボックスに反映させるだけであれば TextBox1のカラムをテンプレートカラムにし、TextBoxの後ろにボタン コントロールをおき、そのボタンコントロールを押したときに発生する ページロードで検索の処理をするとかいうことはどうですか。 | ||||
|
投稿日時: 2002-09-27 13:46
>WebFormでもAutoPostBackを使えばできると思いますよ。
>AutoPostBack="True"にし、TextChangedイベントを使用すればできるはずです。 >ただ、DataGrid内でTextChangedイベントを使ったことは無いので断言はできません。 僕も実際、かなりやってみたのですが、DataGrid内に配置されたコントロールは、実行時に名前が入れ替わってしまうので、一つについて制御するすべがないというか、イベントが起きないんです。(コマンドボタンの押下についてだけは方法が別にあるので問題ない) なにか方法があるのでしょうか・・・? _________________ -------------------------------------- ネットビルド 小田原貴樹 odahara@netbuiuld.jp -------------------------------------- | ||||
|
投稿日時: 2002-09-27 13:56
>WebFormでもAutoPostBackを使えばできると思いますよ。
>AutoPostBack="True"にし、TextChangedイベントを使用すればできるはずです。 >ただ、DataGrid内でTextChangedイベントを使ったことは無いので断言はできません。 DataGrid内のコントロールをAutoPostBackにしTextChangedイベントを使用すれば 実務レベルで使用できるかわかりませんが一応できました。 DataGrid内のTextBoxの値を入力したらLabelに表示するサンプルです。 可能かどうかチェックしたためコードは汚いですがご了承下さい。 public void txtCode_TextChange(object sender, System.EventArgs e) { TextBox t = (TextBox)sender; string cid = t.ClientID.Replace("txtCode","lblName"); int ctrlno = 0; for (int i=0;i<100;i++) { if (cid.IndexOf(i.ToString()) > 0) { ctrlno = i; break; } } ctrlno -= 2; Label l = (Label)dgDetail.Items[ctrlno ].FindControl("lblName"); l.Text = ctrlno .ToString(); DataTable Dt = (DataTable)Session["detail"]; ctrlno += 1; foreach(DataRow Drow in Dt.Rows) { if (Drow[0].ToString() == ctrlno .ToString()) { Drow[1] = t.Text; Drow[2] = l.Text; break; } } Session["detail"] = Dt; Dt.Dispose(); BindDataGrid(); } | ||||
|
投稿日時: 2002-09-28 01:08
そうですかZEPさんできたんですか。おめでとうございます。
ASP.NETの底力はまだまだあるんですね。 ところで >DataGrid内のコントロールをAutoPostBackにしTextChangedイベントを >使用すれば実務レベルで使用できるかわかりませんが一応できました。 ということですが、どうやってDataGrid内のコントロールにAutoPostBackを 割り当てて、TextChangedイベントプロシージャーをしているのかが わからなかったのですが、もしさしつかえなければASPX側の設定を 教えてもらうことはできませんか。 そこの部分がいくらやってもうまくいかなかったので。 | ||||
|
投稿日時: 2002-09-28 07:49
NamingContainerを使用すると簡単にできます。
この例は、TextBoxのTextChangedイベントでTextBoxに入力した値を Labelに複写しています。
[ メッセージ編集済み 編集者: Dr ADO.NET 編集日時 2002-09-28 07:54 ] |