0

listbox多选框如何处理点到listitem上就只能选中一条记录的问题

asked 2009-08-24 08:09:43 +0800

wwjjkk gravatar image wwjjkk
33 1

updated 2009-08-24 08:17:36 +0800

不知道这个是否是zk需要改进的地方,就目前有没有比较好的解决方法(不换用其他组件来实现,就用listbox)。
设置listbox的属性为checkmark="true" multiple="true" 处理多选实现起来比较简单,但是有个问题
如果用户在选择了几条记录后,不小心点到listitem上,那么前面选择的就白费了,只有最后那条被选中
如果这个问题暂时得不到解决,那么listbox的多选的实用性就相当差了,不能总是要求用户必须记得按ctrl或是只能在那个小框里打钩吧

delete flag offensive retag edit

6 Replies

Sort by » oldest newest

answered 2009-08-26 07:44:04 +0800

adam4891288 gravatar image adam4891288
657 1 5

可以在listitem的onClick事件裏面
通過使用self.setChecked()來實現點中listitem的任何地方都可以實現複選框的功能

link publish delete flag offensive edit

answered 2009-08-26 09:21:31 +0800

joylo0122 gravatar image joylo0122
688 1
www.zkoss.org

@wwjjkk

其實這個應該是一個一般性的問題(或許不應說是問題),多選這個行為本身就必須保留一個機制做為「多選轉回單選」的行為
,否則用戶一旦開始多選,就無法依照正常管道變為單選(除非提供其他類似 Button 的元件來做切換)。

在一個只有 List 跟 Submit Button 這種比較一般的環境下,以現在的模式來看,應該還是比較符合一般用戶需求的。
若開發者只提供多選環境,adam4891288提供的也是一種解決辦法。但開發者就必須自行解決已被選的紀錄再次被點選時該做
的行為。

/Joy

link publish delete flag offensive edit

answered 2009-08-27 04:56:54 +0800

wwjjkk gravatar image wwjjkk
33 1

updated 2009-08-27 05:04:46 +0800

感謝兩位的回覆
通過使用self.setChecked()來實現點中listitem的任何地方都可以實現複選框的功能能說得更詳細些嗎?
我只找到setSelected(),而且还是只能选中一条。

保留「多選轉回單選」的行為機制我認為意義不大,既然选择采用多选的方式肯定是希望做多选操作时能更便利一些,而且用戶可以通過先全選再全取消的方式快速實現「多選轉回單選」。因此提供多選的情況下,默認多選且不讓之前選中狀態消失應該更合理更实用一些。

特別是當從數據庫中讀取數據時已經做了讓部份記錄被選中的情況下,如果稍有不慎就將之前選中或從數據庫中讀取的選中記錄狀態給弄丟了或強制用戶在多選時必須記得按ctrl或是只能在那個小框里打鉤,用戶體驗是很糟糕的

目前我的處理方法是沒有使用listbox中的checkmark="true" ,而是在listitem中加上checkbox再自己做關聯,但這樣處理起來比較麻煩。希望能將listbox的checkmark进行改进,提供一個多選時點擊listitem的時候不會讓之前選中狀態消失的方法

link publish delete flag offensive edit

answered 2009-08-28 01:21:37 +0800

adam4891288 gravatar image adam4891288
657 1 5

listitem雖然可以返回selected狀態,但似乎卻沒有直接的onSelect事件,也沒有onClick事件等,實在不算方便。
如果一定要實現你需要的功能,可以把複選框的選擇動作寫入到每一個listcell的onClick事件里。
不過這樣實現的話真的也挺麻煩……不過應該會比追加一個checkbox的處理要稍稍簡單些?希望能幫到你,不過水平確實有限……哈
另外關於Treeitem的select問題謝謝啦,一開始沒注意到Tree有onSelect事件的~

link publish delete flag offensive edit

answered 2009-08-28 02:01:40 +0800

wwjjkk gravatar image wwjjkk
33 1

updated 2009-08-28 02:11:25 +0800

listitem其实是有onClick事件的,甚至还有onDoubleClick事件可以使用,
不过在Property中或使用content assist都找不到这些事件就是了
很神奇吧……

link publish delete flag offensive edit

answered 2009-08-31 03:17:28 +0800

adam4891288 gravatar image adam4891288
657 1 5

好神奇……我希望這種神奇也會出現在Treeitem身上……可惜沒有……
tree雖然有onSelect事件,但是無法追蹤究竟是哪個treeitem被選中
我想要的功能還是沒法實現呀……

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2009-08-24 08:09:43 +0800

Seen: 609 times

Last updated: Aug 31 '09

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More