bug of jquery.linkselect.js in asp.net

今天公司另外一个项目组用的jquery.linkselect.js出了问题,问题描述如下:

1) 在一个用户控件上有两个dropdownlist,其中一个有postback事件,另外一个没有。

2) 在page load完成后点击页面上的一个按钮来为两个dropdownlist绑定值。

3) 在页面上将没有postback的dropdownlist的值选成非默认值

4) 在选择有postback的dropdownlist,触发它的postback事件

5) 服务器端得selectindexchange事件没有执行,完成回发后,页面上的两个dropdownlist值还原成默认值

 

问题原因:

因为asp.net在服务器端设置控件的value的时候是根据客户端的name属性来设置的(个人猜测,没有得到资料证实),但是由于jquery.linkselect.js post回去的name是错误的,所以导致asp.net不能正确的读取和设置viewstatu。所以出现了上面的问题。

 

解决:

将jquery.linkselect.js文件的第354行修改成

, '<input type="hidden" name="' + self.id.replace("_", "$") + '" id="' + self.id + '" value="' + value + '" />'

此行原为:

, '<input type="hidden" name="' + self.id + '" id="' + self.id + '" value="' + value + '" />'

 

附录:

asp.net客户端的id和name的关系是$和_,页面是最顶级,如页面上有控件A(id=cona),控件A中有控件B(id=conb),则A在客户端生成的

name=cona

id=conb

控件B在客户端生成的为

name=cona$conb

id=cona_conb

而jquery.linkselect.js post给服务器的name是和id一样的值,固有上面的问题。

 

完整代码如下:

 

后记:

当我把新的code给他们的时候,他们说问题没得解决,哎,郁闷啊,我在这边模拟的已经ok了,不晓得哪里还有问题,算了,不管了,谁叫我们是跨国开发呢,太远了……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值