- PR -

DataList内に作成したテキストボックスのイベント取得

1
投稿者投稿内容
よしな
常連さん
会議室デビュー日: 2003/06/16
投稿数: 20
投稿日時: 2003-09-30 19:24
お世話になっております。

ASP.netに関する質問です。
DataList内にテキストボックスを作成し、そこに入力した値を取得しDataListを更新する処理を作成しようと思っております。
そこで、そのテキストのIDでTextChangeのハンドリングをし、行おうと思ったのですが、うまくいきません。

こういった事例で作成された方、またこうやってはどうか?と思われる方、
ご教授願います。

[ メッセージ編集済み 編集者: カネ 編集日時 2003-09-30 19:27 ]
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-01 23:50
コマンドボタン使ってItemCommandイベントでハンドリングするのが簡単かと。
DataListやDataGrid中に配置したテキストボックス等のコントロールは
行ごとにユニークなIDが割り当てられますから、
そのIDを使ってハンドリングするのは無理かと思います。

他の方法
・JavaScriptを使ってクライアント側で変更されたコントロールをチェックしておき
 サーバにポスト後処理する。
・初期値を格納しておき、サーバ側でコントロールを全てチェックして
 変更されているものだけ処理する。
どちらもめんどくさいですが。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2003-10-02 10:07
http://www.microsoft.com/japan/msdn/vs/webapplication/vbtchTopQuestionsAboutASPNETDataGridServerControl.asp#vbtchtopquestionsaboutaspnetdatagridservercontroleditingmultiplerows

↑ここの『複数の行を同時に編集する』が参考になりませんか?(DataGridですが。)
<asp:TextBox OnTextChanged="メソッド名" ... >とするところがポイントです。


よしな
常連さん
会議室デビュー日: 2003/06/16
投稿数: 20
投稿日時: 2003-10-02 17:41
ぴでさん、Heさん返答ありがとうございました。

もうひとつ質問させてください。
現在テキストボックスには
TextBox.attribute("onBlur") = "javascript関数"
でイベントを追加して、カーソルが入ったときにバックグラウンドカラーを変更する仕様で作成していますが、リスト内テキストはこういったこともできないでしょうか?
私自身が試した中では、うまくいきませんでした・・・。

他に方法があれば助言頂けますか?

何度も申し訳ありませんが、よろしくお願いします。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 17:44
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6074&forum=7
ユニークIDを使わないようにJavaScript関数にthisオブジェクトを渡してやればできます。

[ メッセージ編集済み 編集者: ぴで 編集日時 2003-10-02 17:45 ]
よしな
常連さん
会議室デビュー日: 2003/06/16
投稿数: 20
投稿日時: 2003-10-02 18:07
ぴでさん、早速の返答ありがとうございます。

ほんとに初心者で申し訳ありません。

リスト内のテキストの定義(***.aspxファイル)では
<asp:textbox id="txtUkeireDay" style="IME-MODE: disabled" runat="server" cssclass="txtbox" Width="50px" MaxLength="8" text='<%# DataBinder.Eval(Container, "DataItem.UKEIRE_DAY") %>'></asp:textbox>
のような定義をしてあります。

ここで、そのjavascriptを設定するにはどうしたらよいでしょうか?
本当にお忙しいところすみませんが、ご教授願います。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 19:02
コード:
InitializeComponent()にイベント追加

DataList1.ItemDataBound += new DataListItemEventHandler(DataList1_ItemDataBound);

private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e){
if(e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem){

TextBox ctl = (TextBox)e.Item.FindControl("txtHoge");
ctl.Attributes.Add("onfocus","f(this)");
ctl.Attributes.Add("onblur","b(this)");
}
}

<asp:textbox id="txtUkeireDay"・・・onfocus="f(this);" onblur="b(this);"></asp:textbox>
と書いてもちゃんと動きますけどね。
ASP.Netの仕様的に合ってるかどうかは分かりませんが、こっちのほうが簡単です。

とりあえずがんばってみてください。

-=-=-=-=
引数this忘れてました。

[ メッセージ編集済み 編集者: ぴで 編集日時 2003-10-02 19:35 ]
1

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