Easyui的setValue方法无效
今天在开发项目的时候,遇到第一个很奇怪的问题:EasyUI的setValue方法无效。
1 2 3 4 5 6 7 8 9 10 | $( '#department_parent' ).combotree( 'setValue' , row.id); AjaxForProvince(); $( '#province' ).combobox( 'setValue' , row.province_id); AjaxForCity(row.province_id); $( '#city' ).combobox( 'setValue' , row.city_id); AjaxForZone(row.city_id); $( '#zone' ).combobox( 'setValue' , row.zone_id); AjaxForDepartment(row.zone_id); $( '#department_parent' ).combotree( 'setValue' , row.id); |
上面的逻辑很简单,就是想在页面上加载完省份,加载市县级,加载完市县级加载区域级,加载完区域级,加载部门。
但是问题是,当我点击的时候,省份,市县级,区域级都能正常加载,但是加载到combotree的时候,总是闪一下正确的值后,框就变空了。
当时也不知道什么问题,网上搜索也没看到别人遇到过这种情况。即便是尝试将row.id改成普通的数字,仍然不行。
既然没有前车之鉴,那只能自己分析了。
既然在加载的时候,combotree会正确加载下拉列表,说明AjaxForDepartment这个方法是调用成功的。
但是加载到setValue的时候,会闪一下没了。就说明问题出在这里。并且极有可能和加载顺序或者说加载时长有关。
为什么呢?
由于js执行是单线程,但是在combotree内部我们无法得知其执行顺序,所以极有可能是
1 | $( '#department_parent' ).combotree( 'setValue' , row.id); |
先行执行,而AjaxForDepartment(row.zone_id);后续执行,这样就会造成上述问题。
抱着试试看的心态,更改代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | AjaxForProvince(); $( '#province' ).combobox( 'setValue' , row.province_id); AjaxForCity(row.province_id); $( '#city' ).combobox( 'setValue' , row.city_id); AjaxForZone(row.city_id); $( '#zone' ).combobox( 'setValue' , row.zone_id); AjaxForDepartment(row.zone_id); setTimeout( function () { setTreeValue(row) }, 300); var setTreeValue = function (row) { $( '#department_parent' ).combotree( 'setValue' , row.id); } |
然后运行,一切正常。
Combotree下拉绑定,显示undefined
第二个问题,是ComboTree绑定的时候,显示下拉项为undefined的问题。
我是利用combotree的推荐的绑定方式进行加载的:
1 2 3 4 5 6 7 8 9 | $( '#province' ).combotree({ url: '../handler/PermissionService.ashx?method=GetProvince' , method: 'post' , valueField: 'id' , textField: 'title' , onSelect: function (node) { AjaxForCity(node.id); } }); |
这看上去似乎并没有什么问题,但是在我的机器上无论如何都无法显示出准确的数据出来。
最后被迫使用了另外一种方法:
1 2 3 4 5 6 7 | var AjaxForDepartment = function (zoneID) { ajax( '../handler/PermissionService.ashx?method=GetDepartments&zoneID=' + zoneID, function (res) { $( "#department_parent" ).combotree({ data: eval(res) }); }, function (a, b, c) { }); } |
才将问题解决。虽然没有找到原因,但是我想这可能和中文编码字符集有一定的关系。
聊以此文,抛砖迎玉,希望能为你的开发带来参考。
分类:
Javascript 框架记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2012-08-11 WPF换肤之七:异步
2010-08-11 程序员小抄大全