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) { });
}

才將問題解決。雖然沒有找到原因,但是我想這可能和中文編碼字符集有一定的關系。

聊以此文,拋磚迎玉,希望能為你的開發帶來參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM