- - PR -
ListBoxで複数選択したい!!
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-02-12 11:41
こんにちは。
現在WebアプリをC#で開発しています。 ListBoxで、shiftキーやら、Ctrlキーなどを押さなくても、 複数選択できる方法を教えて下さい。 また、クリックすると値が選択され、もう一度クリックすると 値の選択が解除されるというやり方も教えて下さい。 なにぶん初心者なもので・・・。よろしくお願いします。 | ||||
|
投稿日時: 2003-02-13 11:56
チェックボックスのオプションを使うとか?
| ||||
|
投稿日時: 2003-03-19 20:15
すみません、このスレッドはこれ以上投稿がないようなのですが、チェックボックスをつかわない方法では、ListBoxの一覧からマウスのみで複数選択できるような方法はないのでしょうか? #Windowsアプリではあたりまえのような操作なのですが、Webアプリの場合、 #同等の機能を実現するのはつらい、の一例になってしまうのでしょうか・・・。 | ||||
|
投稿日時: 2003-03-20 08:19
こんにちは。
JAVAではできるようですねぇ...(Oracleのインストーラとか)。 クリックイベントかセレクトイベント発生のタイミングで、どこでイベントが発生したかを調べ、その行が現在選択されているなら解除、されていないなら選択に追加、という風にコーディングすればどうでしょう?選択されている、いないはSelectedItemsコレクションに追加されているかどうかなので、これのコピーを作り、選択されているもののリストはこちらで管理、イベントハンドラ終了直前にこの値をSelectedItemに書き写してやればOKでしょう。 | ||||
|
投稿日時: 2003-03-20 11:21
JAVASCRIPTでよろしければ、昔作ったサンプルがあります。
試験的に作ったサンプルなのでコメント何も入ってませんがお許しください。 IE4以上、他ブラウザは未検証です。 ただ<OPTION>の数が多くなると、処理が遅くなるのが難点です。 <SCRIPT LANGUAGE="JavaScript"> var B_Sel = new Array() function BSel(BCon) { var Bmax = BCon.options.length-1 var BB_Sel = new Array() var SelCount = 0 BB_Sel = B_Sel.slice(0) for ( i =0; i <= Bmax; i++) { if (BCon.options[i].selected) { SelCount++ B_Sel[i] = ! B_Sel[i] BB_Sel[i] = true } } if ( SelCount > 1) { B_Sel = BB_Sel } for ( i =0; i <= Bmax; i++) { if ( B_Sel[i] ) { BCon.options[i].selected = true } else { BCon.options[i].selected = false } } } </SCRIPT> --------------------------------------------------------- <SELECT NAME="B" SIZE=5 onChange="BSel(this)" MULTIPLE> </SELECT> | ||||
|
投稿日時: 2003-03-24 09:58
Jittaさん、mitoさん、返信ありがとうございます。
mitoさんのスクリプトをそのまま利用させていただきました。 おっしゃるとおり、リストボックスが50程度の項目なのですが微妙に処理がワンテンポ遅れますね。ただ、マウスだけで操作が完結するという点で便利だとおもいます。 ・IE6.0で動作確認。 ・マウスでのドラッグによる複数選択も可能(もともと可能。悪影響なし、という意味) ありがとうございました。 |
1