Easyui Combotree问题及其相关
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问题及其相关的更多相关文章
- EasyUI ComboTree无限层级异步加载示例
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...
- Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径
Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...
- Jquery EasyUI Combotree根据选中的值展开所有父节点
Jquery EasyUI Combotree根据选中的值展开所有父节点 Jquery EasyUI Combotree 展开父节点, Jquery EasyUI Combotree根据子节点选中的 ...
- Jquery EasyUI Combotree 初始化赋值
Jquery EasyUI Combotree 初始化赋值 ================================ ©Copyright 蕃薯耀 2018年5月7日 https://www. ...
- Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...
- easyui combotree不让父级选中
easyui combotree不让父级选中? <ul id="combotree"></ul> $(function () { $("#comb ...
- 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树
EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...
- easyui combotree 异步树 前端写法js
简要说下使用场景: combotree下拉框第一次加载时,请求一个接口,页面上展示顶层节点们(可以理解为最顶层的节点,比如所有的一级公司): 当点击其中一个节点前面的小三角展开时,再次请求服务器接口( ...
- EasyUI Combotree只选择叶子节点
EasyUI Combotree的方法拓展自Combo和Tree.而Tree有一个onBeforSelect事件来帮助我们实现只选择叶子节点的功能. Tree事件需要 'node' 参数,它包括下列属 ...
随机推荐
- IOS 杂笔-2(协议)
1.协议的定义 @protocol 协议名称 <NSObject> //方法声明列表 @end; 2.如何遵守协议 (1)类遵守协议 @protocol 类名:父类名 <协议名称1, ...
- centos创建监控宝采集器及添加插件任务
官方的说明文档很不详细操作也有点小问题,故把操作记录如下. 操作系统环境: centos 5.8 python 2.4.3 创建采集器等操作这里就不说了,见官方文档:http://blog.jiank ...
- 【OpenCV】图像转成YUV420 I420格式
一.YUV420 I420介绍 一种颜色编码方法,在YUV色彩空间中,Y表示亮度信号,U.V表示色度信号: 其YUV排列如下,4个Y分量(2x2)对应一个U和V, Y存放完,接着存放U,U存放完,最后 ...
- [Eclipse配置] Eclipse代码中显示空白字符(空格,TAB和回车)的方法
在代码页面点击右键进入 Preferences --> General --> Editors --> Text Editors. 在 Show whitespace charact ...
- sql server中游标
参考:http://blog.csdn.net/luminji/article/details/5130004 利用SQL Server游标修改数据库中的数据 SQL Server中的UPDATE语句 ...
- Linux下恢复删除的文件
转自:http://github.tiankonguse.com/blog/2015/09/13/linux-remove-recovery/ 下午, DBA找我说有些SQL执行了两个小时了,导致主从 ...
- centos 配置本地 yum源
修改CentOS-Media.repo时 每行代码开始不要有空格 [c6-media] #库名称 name=CentOS-$releasever - Media #名称描述 baseurl=file: ...
- 关于点击空白关闭弹窗的js写法推荐
$(document).mouseup(function(e){ var _con = $(' 目标区域 '); // 设置目标区域 if(!_con.is(e.target) && ...
- Java基础の乱弹琴一:assert关键字
一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...
- [译] C track: compiling C programs.
原文:C track: compiling C programs. C track: compiling C programs. 尽管有些计算机语言(如 Schema 或者 Basic)通常使用交互式 ...