- PR -

グリッド内でのクライアントスクリプトによる計算

1
投稿者投稿内容
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2006-11-29 19:34
いつもお世話になってます。

ASP.NET、C#2.0で開発してます。
GridView内のJavascriptについて質問です。

・テンプレート列A=ASPのTextBox
・テンプレート列B=ASPのLabel
・テンプレート列C=ASPのLabel
上記、列A、列B、列Cとあり、A+B=Cとなっていた場合、
で、列Aに値を入れて、フォーカスが外れたときに計算結果を
列Cに代入するという処理を行いたいのですが、ポストバックなしで
実現はできないのでしょうか?
列B、列CのIDが自動生成になってしまう為、どのようにJavaScriptを書けば
よいかわからない状態です。

どうぞ、宜しくお願い致します。


いしい
会議室デビュー日: 2005/10/04
投稿数: 5
投稿日時: 2006-11-29 21:46
Qさん、こんばんわ。

ブラウザに出力されるHTML要素のIDの取得方法が
わかればJavaScriptが書けるのに・・・
というところでしょうか?

とりあえず私は2つほど方法を思いつきました。
参考になれば幸いです。

1. Control.ClientIDプロパティを使用して、サーバ側のコードで
動的にJavaScriptコードを作成する。作成したコードを
Page.ClientScript.RegisterStartupScriptを使用して
出力する。

2. クライアント側のコードで、window.onloadイベントで
対象のテーブル(GridViewの出力HTML)を走査して、テキストボックスに
動的にイベントを割り当てる。IDはgetElementsByTagNameなどを
使用してその処理の際に取得する。
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2006-12-01 13:01
いしいさん、ありがとうございます。

お返事遅くなりましたが、ClientIDプロパティを使用したところ、
行合計は実現できました!!
助かりました。

getElementsByTagNameについても、列合計などで応用できそうなので
これまた助かりました。
ただ、getElementsByTagNameだと、チェックボックスONの行のみの
列合計といった、条件つきができないみたいですね。
まだ、調査中ですが、いい案があれば宜しくお願いします。
いしい
会議室デビュー日: 2005/10/04
投稿数: 5
投稿日時: 2006-12-02 14:02
引用:
ただ、getElementsByTagNameだと、チェックボックスONの行のみの
列合計といった、条件つきができないみたいですね。



そうですね。いったん取得した要素の配列をfor文で走査して、チェックされたもののみを抽出するという処理が必要になると思います。
1

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