- - PR -
aspxのJavaScriptでGridViewを取得する
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-01-23 17:03
GridViewの各行にあるhiddenFieldのIDを、
サーバー側で番号をIDの後につけて設定すると、 今度は、JavaScript側で、GridViewの行数は可変ですから、 そのIDでデータ取得ができません。 というのは、aspx は、実際に画面を表示すると、ソース自体を自動で書き換えてしまい、そのときに、IDも変わります。 そのIDを取得するためには hiddenFieldのIDが ID="hid" とすると JavaScriptでは var a = document.getElementById("<%=hid.ClientID %>; で取得できますが、 この"hid"の部分が hid01 -> hid02 -> ... と可変になると、 それを指定することができません。 というのは、 この「hid.ClientID」の部分は 文字列ではないからです。 ですので、このIDはすべて同じにしていて GridViewのオブジェクトを取得してから var grid = document.getElementById("<%=grvw.ClientID %>; grid.rows(i).cells(... として取得したいのですが、 九列目のセルの中には 前出のとおり ボタン二個、hiddenFieldが一個あるので どうやってこのhiddenFieldを取得したらいいかがわかりません。 ご教授お願いいたします。 | ||||||||||||||||
|
投稿日時: 2009-01-23 17:21
RowDataBound時にFindControlでとれませんか?
その時にボタンのOnClientClick = スクリプト を設定して引数で渡してあげるとか。 | ||||||||||||||||
|
投稿日時: 2009-01-23 17:33
この方法は実はできているのですが、私なりのこだわりがあって、javaScriptでどうしてもしたいのです。 だれか、JavaScriptで取得する方法しりませんでしょうか? | ||||||||||||||||
|
投稿日時: 2009-01-23 17:55
childNodes
>この方法は実はできているのですが、私なりのこだわりがあって、javaScriptでどうし>てもしたいのです。 そゆ事は先に書こうよ。 [ メッセージ編集済み 編集者: まるく 編集日時 2009-01-23 18:01 ] | ||||||||||||||||
|
投稿日時: 2009-01-24 00:14
GrivdViewの外に書くなら単にコードブロック使って、 document.getElementById('<%= grvw.Rows(2).FindControl("hiddenField").ClientID %>') ItemTemplateの中に書くならデータバインド式を使って、 document.getElementById('<%# CType(Container, GridViewRow).FindControl("hiddenField").ClientID%>') で取れると思います。 | ||||||||||||||||
|
投稿日時: 2009-01-24 12:14
GridViewの外に書くというのは、<script type="..."> <script> の中に書いてそのfunctionを呼び出すという形ですね? すみません、簡単な事を聞いていると思いますが・・・ それと、このコードブロックの中の言語はVB.netとみてよろしいのですか?
すると、この中に書くというのは、ボタンのOnClientClickイベントの中に直接書き込むと云うことですか? それとも、 <ItemTemplate> ※ボタンの処理・・・ <script> JavaScriptの処理 </script> </ItemTemplate> という形で書くということですか? 初歩的な事を聞いて済みませんが、JavaScriptにはまだあまりなれていないもので。 あと、何故、 ItemTemplateの外に書く場合は、コードブロックにして、 ItemTemplateの中に書く場合は、データバインド式を使うのでしょうか? それと、単純なことで申し訳ありませんが <%= ... %>と <%# ... %>の 意味と、使い分け方・・・ 教えてください。良くわからないです。よくわからず、コーディングをしている状況で順序が逆なような気もしますが、よろしくお願いします。 [ メッセージ編集済み 編集者: apo 編集日時 2009-01-24 12:17 ] | ||||||||||||||||
|
投稿日時: 2009-01-24 23:19
何行目のボタンを押されたかをどうやって判断させようとしたかなどによります。
いずれにしても、引用符やscriptタグがごちゃごちゃするし、 私もvb側でRowDataBoundやRowCreatedなどで処理する方法を推奨します。 JavaScriptに慣れていないならなおさらです。RowDataBoundできてるなら更になおさらです。 ところで、HiddenFieldの値が必要なだけならバインド式を使用すれば取れるので、 getElementByIdする必要はないようにも思います。
<%# ... %>は一言で説明するのは難しいです。以下、完璧な説明ではないと思ってください。 まず、GridViewの各行は一つ一つのコントロールになっています。 そのコントロールをaspx側から参照するための書き方が<%# ... %>で Containerがそのコントロール(型はGridViewRow)になります。 こういうものはGridView以外にもありContainerの型はそれぞれ異なります。 | ||||||||||||||||
|
投稿日時: 2009-01-27 09:59
ベルさん、それに他の方々、いろいろとご説明いただきありがとうございます。とても参考になりました。
|