- PR -

Ajaxをテーブルで使用するとサーバでテーブルの中身が見れない

1
投稿者投稿内容
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 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 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2009-03-16 22:57
よく状況がわかりません。というか何をしたいかの説明が足りません。

メインのテーブルとは3行目に登場する <asp:Table...> これを指しますか?
tblIchiranはどれを指すんですか?
いきなりTextBoxが登場しますが、どこにあるんですか?
sendTblDataはどのタイミングで呼ばれるのですか?

引用:
____<asp:TableCell...>
______Table1--> UpdatePanelを使用
____</asp:TableCell>

これはableCellの中にUpdatePanelがあってその中に別のTable1というTableがあるという意味ですか?

「______Table2--> このテーブルのセルの中に、LinkButtonを作成 」
これと
「<asp:Table2>
__<asp:Button>'''サーバの処理 」
これら「Table2」は同じものですか?

引用:
LinkButton押下したJavaScriptの処理で
ButtonのClickメソッドを実行する

なぜこのようなトリッキーなことをするのですか?

引用:
Button_Clickのメソッド名は、UpdatePanel側で登録しています。

これは具体的にどういう意味ですか?

問題が起きている最小モデルを提示することをお勧めします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 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

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