- - PR -
Ajaxをテーブルで使用するとサーバでテーブルの中身が見れない
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-03-16 10:16
今asp.netで言語はvb.netで開発しています。
aspのほうで、画面の構成は、メインのテーブルの中に <asp:Table...> __<asp:TableRow...> ____<asp:TableCell...> ______Table1--> UpdatePanelを使用 ____</asp:TableCell> ____<asp:TableCell...> ______Table2--> このテーブルのセルの中に、LinkButtonを作成 _________LinkButtonのOnClick='JavaScriptの処理' ____</asp:TableCell> __</asp:TableRow> </asp:Table> メインテーブルの下に以下の二つ目のテーブルを作成し、そのかなにダミーのボタンを置いています。 <asp:Table2> __<asp:Button>'''サーバの処理 ●JavaScriptの処理内容 LinkButton押下したJavaScriptの処理で ButtonのClickメソッドを実行する Button_Clickのメソッド名は、UpdatePanel側で登録しています。 このときに、ボタンのクリックメソッドが実行されると 以下のような順序でサーバ処理が実行されます。 Init処理 ↓ Page_Load処理 ↓ Button_Clickメソッド しかし、このどのメソッドでも画面のLinkButtonのおいてあるメインテーブルの値がまったく参照できません。 テーブルのRows.Countを見てると、0となっています。テーブルの中身自体が無いみたいです。 たぶん、サーバに行ったときにはテーブルは初期化されているのかなと思っています。 そこで、JavaScriptでテーブルのセルの中にあるTextBoxの値を取得してサーバに渡そうと思っていますが、テーブルのセルのテキストボックスを参照する方法がわかりません。 今のところ以下の部分はできていますが。。。 function sendTblData() { _var tblData = new Array(); // データの配列 _var table = document.getElementById("<%=tblIchiran.ClientID%>"); _var i; _//オブジェクトの配列のようになっていると思いますけど。 _tr = table.getElementsByTagName('tr'); _for (i = 0; i < tr.length; i++) { __td = tr[i].getElementsByTagName('td'); __txt = td[4].childNodes[0].nodeValue; //--> これではテキストボックスの値が取れません。 __txt2 = td[10].childNodes[0].nodeValue;//--> これではテキストボックスの値が取れません。 __tblData[i, 1] = txt; __tblData[i, 2] = txt2; __} __//-->ここで、サーバに値を渡したいのですが、どんな方法がありますか? __return true; } APO [ メッセージ編集済み 編集者: apo 編集日時 2009-03-16 10:19 ] [ メッセージ編集済み 編集者: apo 編集日時 2009-03-16 13:16 ] | ||||||||||||
|
投稿日時: 2009-03-16 22:57
よく状況がわかりません。というか何をしたいかの説明が足りません。
メインのテーブルとは3行目に登場する <asp:Table...> これを指しますか? tblIchiranはどれを指すんですか? いきなりTextBoxが登場しますが、どこにあるんですか? sendTblDataはどのタイミングで呼ばれるのですか?
「______Table2--> このテーブルのセルの中に、LinkButtonを作成 」 これと 「<asp:Table2> __<asp:Button>'''サーバの処理 」 これら「Table2」は同じものですか?
問題が起きている最小モデルを提示することをお勧めします。 | ||||||||||||
|
投稿日時: 2009-03-17 03:31
UpdatePanelを利用してパーシャルポストバックさせている
状態でJavaScriptを利用するのは処理が複雑になりますから 止めておいた方がよろしいかと。 JavaScriptを利用しないで すべてASP.NETのサーバーコントロールで 対処するか。 UpdatePanelを利用しないで Webサービスを呼び出して table要素を取得/更新したらどうでしょうか。 jTemplateなんかを利用すると実装できそうですね! jTemplateのライブデモです。 http://asp35.com/samples/090305VB-1.aspx _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
1