- PR -

ListBox に JavaScript で追加したアイテムをサーバ側で参照するには?

1
投稿者投稿内容
LOBO
会議室デビュー日: 2004/07/22
投稿数: 11
お住まい・勤務地: 愛知
投稿日時: 2005-05-25 13:51
ASP.NET(C#)での開発です。

Web フォームの<asp:ListBox ID="ListBox1" Runat="server">に対して、
下記の JavaScript のコードでリストアイテムの追加を行ったのですが、
ポストバックの内容に含まれていないためにサーバ側のプログラムで追
加したアイテムを参照することができません。

var lblen = document.Form1.elements["ListBox1"].length;
document.Form1.elements["ListBox1"].length = lblen + 1;
document.Form1.elements["ListBox1"].options[lblen].text = "ABC";
document.Form1.elements["ListBox1"].options[lblen].value = lblen + 1;

そして、必然的にだと思うのですが、その後クライアント側で再描画さ
れたリストボックスには JavaScript で追加した内容は存在しなくなり
ます。

クライアントサイドでリストボックスにアイテムを追加して、その内容
をサーバサイドで参照する方法をご存じの方がいらっしゃいましたら教
えてください。

よろしくお願いいたします。

----------

実現したい内容は以下のものです。
メインのウインドウがあり、ボタンクリックによりそこからユーザ検索
の子ウインドウを開く。子ウインドウで選択したユーザをメインウイン
ドウのリストボックスに(JavaScriptで)追加して、子ウインドウをク
ローズ。別のボタンクリックにより、サーバ側で追加されたユーザに対
する処理を行う。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-05-25 14:04
サーバー側に追加した項目の情報を送らなければいけないわけですから、リストボックスに追加したデータをサーバー側で参照するのは無理です。
リストボックスに項目を追加するのと同時に"何か"(例えばHiddenフィールド)にもその情報を追加しておいて、サーバー側でそれを見てリストボックスを組み立てる位しか私には思いつきませんね。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-25 14:11
通常、WEBブラウザはリストボックスの選択されたアイテムの情報しかサーバーには送信しない。サーバー側に送信されるのは、選択していた項目のValue値だけ。JavaScriptでリストボックスに追加されたアイテムの一覧はサーバー側に送信されないので、サーバー側では参照しようが無い。

したがって方法としては・・・
・PostBackが発生した後、もう一度JavaScriptで項目を表示する。
・リストボックスに登録したアイテムの一覧を、JavaScriptでHIDDENコントロールに設定する。
・JavaScriptで一覧を登録するのをやめ、PostBackの流儀にしたがってサーバー側で処理する。
・・・と言った事が考えられると思う。
LOBO
会議室デビュー日: 2004/07/22
投稿数: 11
お住まい・勤務地: 愛知
投稿日時: 2005-05-25 14:36
早速ご教授下さいまして、大変助かりました。
どうもありがとうございます。

JavaScript でリストボックスにアイテムを追加する際に、同時に追加内
容を Hidden のフィールドに設定する方式にしました。
1

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