Easyui的setValue方法无效

今天在开发项目的时候,遇到第一个很奇怪的问题:EasyUI的setValue方法无效。

$('#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内部我们无法得知其执行顺序,所以极有可能是

$('#department_parent').combotree('setValue', row.id);

先行执行,而AjaxForDepartment(row.zone_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);
setTimeout(function () { setTreeValue(row) }, 300); var setTreeValue = function (row) {
$('#department_parent').combotree('setValue', row.id);
}

然后运行,一切正常。

Combotree下拉绑定,显示undefined

第二个问题,是ComboTree绑定的时候,显示下拉项为undefined的问题。

我是利用combotree的推荐的绑定方式进行加载的:

$('#province').combotree({
url: '../handler/PermissionService.ashx?method=GetProvince',
method: 'post',
valueField: 'id',
textField: 'title',
onSelect: function (node) {
AjaxForCity(node.id);
}
});

这看上去似乎并没有什么问题,但是在我的机器上无论如何都无法显示出准确的数据出来。

最后被迫使用了另外一种方法:

var AjaxForDepartment = function (zoneID) {
ajax('../handler/PermissionService.ashx?method=GetDepartments&zoneID=' + zoneID, function (res) {
$("#department_parent").combotree({
data: eval(res)
});
}, function (a, b, c) { });
}

才将问题解决。虽然没有找到原因,但是我想这可能和中文编码字符集有一定的关系。

聊以此文,抛砖迎玉,希望能为你的开发带来参考。

Easyui Combotree问题及其相关的更多相关文章

  1. EasyUI ComboTree无限层级异步加载示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...

  2. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...

  3. Jquery EasyUI Combotree根据选中的值展开所有父节点

    Jquery EasyUI Combotree根据选中的值展开所有父节点  Jquery EasyUI Combotree 展开父节点, Jquery EasyUI Combotree根据子节点选中的 ...

  4. Jquery EasyUI Combotree 初始化赋值

    Jquery EasyUI Combotree 初始化赋值 ================================ ©Copyright 蕃薯耀 2018年5月7日 https://www. ...

  5. Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框

    Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...

  6. easyui combotree不让父级选中

    easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#comb ...

  7. 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树

    EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...

  8. easyui combotree 异步树 前端写法js

    简要说下使用场景: combotree下拉框第一次加载时,请求一个接口,页面上展示顶层节点们(可以理解为最顶层的节点,比如所有的一级公司): 当点击其中一个节点前面的小三角展开时,再次请求服务器接口( ...

  9. EasyUI Combotree只选择叶子节点

    EasyUI Combotree的方法拓展自Combo和Tree.而Tree有一个onBeforSelect事件来帮助我们实现只选择叶子节点的功能. Tree事件需要 'node' 参数,它包括下列属 ...

随机推荐

  1. IOS 网络浅析-(九 NSURLSession代理简介)

    从最开始什么都不懂的小白,到到现在略知一二的小孩.我觉得不仅仅是我,大家应该都会注意到代理几乎贯穿着IOS,那么问题来了,我接下来要说什么呢,那就是.标题的内容啦.上篇网络系列的文章我介绍了NSURL ...

  2. Unity下载文件一(www协程下载)

    下载功能,是大多数游戏或者软件都需具备的一个基础模块,但是很多人却没有机会去写这个完整功能. 那么我就分享下我写该功能时的随笔整理 本文只说www协程下载,http的同步和异步下载放到下篇 这个简单: ...

  3. win7开启休眠功能

    win7有的系统默认关机选项没有休眠功能,其实是没打开. cmd-> powercfg -hibernate on   即可

  4. android中实现view可以滑动的六种方法

    在android开发中,经常会遇到一个view需要它能够支持滑动的需求.今天就来总结实现其滑动的六种方法.其实每一种方法的 思路都是一样的,即:监听手势触摸的坐标来实现view坐标的变化,从而实现vi ...

  5. Effective Java 25 Prefer lists to arrays

    Difference Arrays Lists 1 Covariant Invariant 2 Reified at runtime Erased at run time 3 Runtime type ...

  6. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结

    Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...

  7. html弹窗半透明

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  8. Linux学习之七——乱码的解决方案

    一.乱码的原因 乱码是编码不统一引起的,有下面一些地方需要注意 1. Linux 系统默认支持的语系数据:这与 /etc/sysconfig/i18n 有关:2. 你的终端界面 (bash) 的语系: ...

  9. ubuntu自带的gedit编辑器添加Markdown预览插件

    gedit安装Markdown Preview Ubuntu自带的gedit编辑器也是有很强大的功能的,且支持插件的安装.对于喜欢用Markdown的我来说,这当然是很好的了,gedit本身 就支持M ...

  10. shell exit 0 exit 1

    其实都一样,都是退出,只不过返回这个0和1是返回给操作系统的错误或者正确代码. exit 1 指的是脚本运行的返回值,用来指示成功或失败,以及失败的原因. exit 0 表示成功,exit 1表示失败 ...