才上两天班又能休息两天,本来今天的心情还是不错的,谁知被RadioButtonList折腾到深更半夜,实在是有些郁闷。所谓有苦就要吐出来,和大家一起分担,也好抚慰一下受伤的心灵吧。
故事的发生是这样的。话说今天在搞一个程序,要在一个页面上处理相当复杂的业务,我一般不太喜欢这么干,但用户却喜欢,因为和自己的工作习惯比较一致,没办法,这就叫用户体验吧,作为程序员总是应该尽自己最大的努力去满足的。asp.net设计的初衷就是用尽可能少的页面来实现需要的功能,但实际使用中大家都知道,过多的回滚数据会降低程序运行的效率,来回的刷新会破坏用户的体验,所以,后来又有了ajax,当然还得有javascript携jquery,以使用户的操作更加贴近自然,从而达到人机合一的完美境界。
用户是爽了,但带给程序员的却是越来越复杂的编程技术,有时看着满目的代码,真想拿出C#自吻算了。今天我的遭遇基本就是如此,为了给用户提供一个良好的使用环境,我不惜动用了所有最热门的技术,也把自己搞的晕头转向,最终陷落于RadioButtonList的数据绑定中。它本来是一个挺普通的控件,我们一直用它,挺好的,但今天不知怎么搞的,就是不听使唤了。本来,我是想绑定一些物料信息到这个控件上去,当然,这些物料信息是来源于数据库,用SQL语句获取。为了不影响用户的心情,这段操作是放在UpdatePannel中的,然后,我想通过输入一些条件,然后把找到的物料信息绑定到RadioButtonList控件上,接下来用户选中需要的那一条数据,按“确定”按钮后,将该数据绑定再绑定到其它控件上。这时问题就出来了,无论我选择哪一条数据,实际都只能选中第一条,而且当页面刷新后,默认选中的值也都回来了第一条,按理说在默认情况下,控件是能够保持所谓“视图状态”的。于是,我怀疑ajax的影响,jquery的影响,控件本身的设置,反正就这样试来试去直到下班。晚上本来是想好好休息的,但最终还是逃不过程序员的宿命,就是放不下,都半夜了还是拨通了公司的vpn,登录到自己的工作电脑继续找原因。
既然都在这儿叨叨了,你也就知道已经搞定,你猜是啥原因,说出来真是气死人。原来,问题只是出在数据绑定上,跟别人一点儿关系没有。我在给RadioButtonList绑定数据时,给它的值指定的字段是物料编码,要绑定的数据是同一物料存放的所有货位,那么这个物料编码对于每条数据来说都是一样的。
然后,悲剧就发生了。