首页 新闻 会员 周边

4个combobox引起的血案

0
悬赏园豆:30 [已关闭问题]

有4个combobox,数据源相同,用户需要做到互斥。比如box1选了"0",那其余3个就无法选"0",但是如果box1选了""空字符串,"0"就自动恢复到box1。也就是说,combobox需要记住删除了哪几个元素,待需要的时候还原。

如下图,box1 = 0, box2 = 1, box3= 2,那么box4就无法选择0,1,2。但是如果将box1,box2,box3值设为""空字符串,那么box4就可以显示所有的数字。

请问各位有何高招来解决4个combobox兄弟引起的血案呢?

附源代码:

 

Code

 

 

问题补充: To 丁: 这个是Demo,真正项目DataTable 4万条记录重新绑定耗时2-3秒,用户觉得点个ComboBox都这么慢,希望能<0.5秒。所以希望有高人指点!!! To WildRam: 用文字真不好描述,那我就一步步详细描述过程吧: (1)PageLoad()时候,对4个Combobox重新绑定。 (2)用户点击box1,触发事件,我们获取其他3个box的Text,如果非空,那么查找与box1中数据项匹配的项,并将其删除,否则,Do nothing。(比如第一次时,用户选0,其他3个是为空的) (2)用户点box2,触发事件,获取其他3个box的Text,找到box1.Text = 0,我们查找box2的数据源,发现有0,将0删除,其他2个非空,继续。(此时用户选1,不能选0了) (3)用户点box3,触发事件,算法同2。在box3的数据源中删除0, 1。(此时用户选2,不能选0,1了) (4)用户点box4,触发事件,算法同2。在box4的数据源中,删除0,1,2。(此时用户选3,不能选0,1,2了) (5)这时4个box为0,1,2,3。用户觉得太多了,需要2个赋值即可,另外2个恢复为空。此时用户想要将box3,box4的值为空。 (6)不过,用户很烦人,却异想天开的让box1,box2的值为空。于是用户点击box1,此时获取其他3个box.Text,即1,2,3。于是在box1的数据源中找到这3个值,并将其删除。用户选择了“”,但不能选1,2,3了,因为已经被删除。 (7)用户继续点box2,我们获取其他3个box的Text,即“”,2,3。于是我们查找box2数据源中的2,3,并将其删除。不过我们还需要做一项伟大的工作,那就是恢复(2)中删除的0,因为box1此时=“”,我们需要恢复。最后,我们将刚刚已经被删除的0插入到box2的数据源中。此时用户可以选除了2,3以外的任何值了。用户选择了“” 最最关键的就是(7),我如何记忆box1中已经删除的0呢?,如果此时用户继续点击box3,又会出现什么情况呢?我们如何记忆哪个box中删除的项呢?我们又如何在适当的条件下恢复呢? (如果还不够详细,我就跳楼了,不过是1楼) To Geeks: 我已经绞尽脑汁了,无奈算法还是在某些情况下会出现box1,box2同时可以选择1的情况。而这种情况用户不希望看到,用户希望看到的是互斥的Combox4兄弟,并且数据源不仅可以删除数据项,还需要在某些条件下,将删除的数据项恢复! 各位,这4个Combobox兄弟可把我给害惨了。归根结底是线性表的插入、删除,但带记忆功能。有谁能救赎这4兄弟呢?
primeli的主页 primeli | 初学一级 | 园豆:175
提问于:2008-10-30 16:39
< >
分享
其他回答(2)
0

选择上面的一个时,重新绑定下面的,这有何难?

丁学 | 园豆:18730 (专家六级) | 2008-10-30 17:35
0

什么乱七八糟的,你前面说 box1选了 空 就会 恢复到 0,后面又说 box1 2 3 都选 空,4 就什么都能选 。 那到能选空,还是不能选空,你要问什么。什么血案,我看是冤案。

Vadin Wang | 园豆:5 (初学一级) | 2008-10-30 23:42
0

你这里应该有个判断,当选择上面的时候判断一下下面的绑定不能选择已经绑定的数据了。默认为0(当选择空也就是“”的时候)!你试试吧!这个问题不是很难啊!相信你能解决,再试试吧!

Geeks | 园豆:560 (小虾三级) | 2008-10-31 09:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册