GridView冻结后文本框在页面回发后内容叠加的问题解决

6 篇文章 0 订阅

近期开发项目,用到了列表控件LightPowerGridView的冻结功能,但是在列表控件中如果用到了文本框会出现一个很大的问题:

页面回发后,文本框的值会逗号叠加。如:回发前 10.00,回发后就会变成10.00,10.00

 

经过一天多时间,问题终告解决,长吁一口气~~~

 

接下来,分享下问题解决过程:

1)首先怀疑是superTable冻结功能的问题,底层其实也就是调用了superTable冻结功能。

【superTable是专门进行列表控件的js框架,基本原理就是复制了一份新的列表html以便进行冻结控制】

F12调试,发现在传递给superTable的时候,html已经就是错误的了

结论:superTable冻结功能本身没问题

 

2)接着怀疑是底层列表控件有问题

那么我就直接在开发的页面中,手动调用superTable冻结功能,发现同样存在问题

结论:底层控件本身没问题

 

3)现在只能怀疑是微软的列表控件绑定本身就存在问题

验证1:修改superTable的脚本,在复制一份html的基础上,再复制一份出来,这个时候冻结绑定,回发后文本框内容变成了10.00,10.00,10.00!!!

结论:应该就是微软的列表控件GridView在绑定的时候,如果找到多个相同的控件,会导致重复赋值。

 

解决:

如果id不一样,应该问题就可以解决了吧?

于是在复制html的时候,将不展示出来的那部分html中的文本框id+1,

测试:问题依旧存在,那么可能是name控制的绑定吧

继续修改name+1,如下:

$(this.sFDataTable).find('input[type="text"]').each(function () { $(this).attr('name', $(this).attr('name') + 1); });

测试:文本框内容不再发生叠加,问题解决。

 

再次测试:页面中添加一个name相同的input text,照样会导致文本框内容叠加。

 

最终结论:

1、冻结效果是底层调用superTable实现的,当然也可以自己手动调用

2、superTable会复制一份列表控件的html,以便实现冻结效果

3、列表控件在回发绑定的时候,会在html中根据name找对应的控件赋值,如果有多个name相同的控件,就会重复赋值并且,分隔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值