- PR -

ListBoxで複数選択したい!!

1
投稿者投稿内容
hana
ベテラン
会議室デビュー日: 2003/02/08
投稿数: 70
投稿日時: 2003-02-12 11:41
こんにちは。
現在WebアプリをC#で開発しています。

ListBoxで、shiftキーやら、Ctrlキーなどを押さなくても、
複数選択できる方法を教えて下さい。
また、クリックすると値が選択され、もう一度クリックすると
値の選択が解除されるというやり方も教えて下さい。

なにぶん初心者なもので・・・。よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-13 11:56
チェックボックスのオプションを使うとか?
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2003-03-19 20:15
引用:

Jittaさんの書き込み (2003-02-13 11:56) より:
チェックボックスのオプションを使うとか?



すみません、このスレッドはこれ以上投稿がないようなのですが、チェックボックスをつかわない方法では、ListBoxの一覧からマウスのみで複数選択できるような方法はないのでしょうか?


#Windowsアプリではあたりまえのような操作なのですが、Webアプリの場合、
#同等の機能を実現するのはつらい、の一例になってしまうのでしょうか・・・。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-03-20 08:19
こんにちは。

引用:

noraさんの書き込み (2003-03-19 20:15) より:

すみません、このスレッドはこれ以上投稿がないようなのですが、チェックボックスをつかわない方法では、ListBoxの一覧からマウスのみで複数選択できるような方法はないのでしょうか?



 JAVAではできるようですねぇ...(Oracleのインストーラとか)。

 クリックイベントかセレクトイベント発生のタイミングで、どこでイベントが発生したかを調べ、その行が現在選択されているなら解除、されていないなら選択に追加、という風にコーディングすればどうでしょう?選択されている、いないはSelectedItemsコレクションに追加されているかどうかなので、これのコピーを作り、選択されているもののリストはこちらで管理、イベントハンドラ終了直前にこの値をSelectedItemに書き写してやればOKでしょう。
mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 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>
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2003-03-24 09:58
Jittaさん、mitoさん、返信ありがとうございます。

mitoさんのスクリプトをそのまま利用させていただきました。

おっしゃるとおり、リストボックスが50程度の項目なのですが微妙に処理がワンテンポ遅れますね。ただ、マウスだけで操作が完結するという点で便利だとおもいます。


・IE6.0で動作確認。
・マウスでのドラッグによる複数選択も可能(もともと可能。悪影響なし、という意味)

ありがとうございました。
1

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