1. 程式人生 > >EasyUI中tree元件不顯示資料或者顯示undefined的解決方案

EasyUI中tree元件不顯示資料或者顯示undefined的解決方案

這幾天學習easyUI,用到了tree元件,蛋疼了N天,終於出來了,現在總結幾個問題。

1、官方demo裡,取的資料都是在.json檔案裡取的,在實際應用中顯然不能這麼做,要從資料庫中取出,那麼問題來了,怎麼取?官方demo裡也沒有說明,在網上找半天也沒找到什麼結果,現做如下總結:

方法1:Ajax取,在web介面載入完成後呼叫ajax,從後臺在資料庫中取值,拼接成JSON,拼接的方法有很多,這裡不一一列舉,拼接完成後,用response的writer回寫JSON,在js裡,tree的data引數即為傳回的JSON(時間原因,這個方法沒有測試,理論可行)。

方法2:根方法一大同小異:以下是程式碼,一看便知:

tree的html程式碼:

<ul id="department_tree" class="easyui-tree"></ul>

tree的js程式碼:
/**
 * @argument 通過URL取tree中的資料
 * @author ZHENGWEI
 * @date 2015-5-8
 * @version 1.0
 */
$(document).ready(function(){
	/*載入完成時呼叫*/
	$("#department_tree").tree({
		/*JSON拼接的地址*/
		url:'CompanyStaffAction!listCompanyDepartment.action',
		/*連線*/
		lines:true,
		/*動畫效果*/
		animate:true
	});
})

其中URL中是後臺傳回JSON的action,程式碼如下
/**
	 * 查詢公司的部門資訊
	 * @author ZHENGWEI
	 * @throws JSONException 
	 * @throws IOException 
	 * @date 2015-5-7
	 */
	public String listCompanyDepartment() throws JSONException, IOException{
		//設定編碼格式,防止中文亂碼
		response.setCharacterEncoding("UTF-8");
		//返回公司部門資訊
		List<CompanyDepartmentInfo> companyDepartmentInfoList = this.companyStaffService.listCompanyDepartment();
		//宣告JSONArray物件,構建tree
		JSONArray jsonChildTreeArray = new JSONArray();
		//判空
		if(companyDepartmentInfoList.size() != 0){
			//迴圈迭代,生成JSON
			for(CompanyDepartmentInfo companyDepartmentInfo:companyDepartmentInfoList){
				//宣告JSON物件
				JSONObject jsonChildInfoObject = new JSONObject();
				//放入JSON
				jsonChildInfoObject.put("id", '"'+companyDepartmentInfo.getDepartmentId()+'"');
				jsonChildInfoObject.put("text", companyDepartmentInfo.getDepartmentName());
				//set進JSON陣列
				jsonChildTreeArray.put(jsonChildInfoObject);
			}
		}
		//最終生成的JSON樹
		JSONObject jsonDepartmentTree = new JSONObject();
		//樹根
		jsonDepartmentTree.put("id", "0");
		jsonDepartmentTree.put("text", "公司部門分類");
		jsonDepartmentTree.put("state", "open");
		//將jsonChildTreeArray變成子節點
		jsonDepartmentTree.put("children", jsonChildTreeArray);
		//string型,將JSON加上'[]'
		String treeData = jsonDepartmentTree.toString();
		treeData = "["+treeData+"]";
		//宣告PrintWriter變數傳回JSON
		PrintWriter out = response.getWriter();
		out.write(treeData);
		return null;
	}

其中一定要注意的是,在做完JSON的封裝後,一定要print一下,看看JSON外是不是有[]符號包裹,否則tree讀不出資料!!!!

最終效果如下:

這個過程千辛萬苦。。。說多了都是淚,網上好多問題都達不到點子上,我也是琢磨了好多天才想明白的,希望以後學習的同學少走彎路

相關推薦

EasyUItree元件顯示資料或者顯示undefined解決方案

這幾天學習easyUI,用到了tree元件,蛋疼了N天,終於出來了,現在總結幾個問題。 1、官方demo裡,取的資料都是在.json檔案裡取的,在實際應用中顯然不能這麼做,要從資料庫中取出,那麼問題來了,怎麼取?官方demo裡也沒有說明,在網上找半天也沒找到什麼結果,現做如

MyBatis模糊查詢報錯但查資料的一種解決方案

今天在用MyBatis寫一個模糊查詢的時候,程式沒有報錯,但查不出來資料,隨即做了一個測試,部分程式碼如下: @Test public void findByNameTest() throws IOException { String resource = "SqlMa

easyuidatagrid動態繫結json載入列的解決方案

在做專案中有這樣一個問題:在前臺輸入sql語句,傳入後臺後獲得資料,將資料繫結在datagrid上顯示。 這個問題困擾我很久,因為如果是傳入sql語句的話,很難確定是哪個表,也不好確定到底有多少列,所以無法使用實體類來獲得資料,解析sql語句的話……..太

jquery-easyui列表控制元件datagrid沒有資料顯示列表為空資訊

jquery-easyui控制元件datagrid下,如果有資料,會顯示按照列表顯示,如果沒有資料,那麼會顯示如下的介面。沒有任何提示。 為了讓沒有資料的情況下,提示“列表為空”,我們需要設定datagrid屬性。這個屬性就是emptyMsg。預設情況下,這個屬性是為空,沒有值。

解決Unity,使用Ngui 的預設字型Arial,在部分Android裝置顯示中文清楚,或者顯示出來問題

Unity工程中的動態字型使用很方便,在一開始的工程中,為了減小遊戲包的大小,我們使用的是Unity內建的預設Arial字型,但是在遊戲上線測試後,很多玩家反饋個別機型字型顯示不完全,主要集中在 小米1代,OPPO,金立,中興等個別機型中。剛開始以為是NGUI的問題,

關於VS2017,VS2015 利用 EF使用Mysql 顯示數據源問題解決方案

es2017 get 可能 顯示 tps 直接 是否 最好 net 在win7,win10,vs2015,vs2017之間折騰了兩天,死活就是調不出來Mysql數據源。真是活見鬼了。 直接說方案吧。 一,卸載你所安裝過的mysql-connector-net、mysql

關於微信emoji 表情數據庫存了,或者顯示為???的問題

數據庫連接 關於 bsp bubuko 顯示 數據 連接 utf 9.png 必須我utf8mb4,數據庫就可以存 2. 數據庫連接也需要是utf8mb4 關於微信emoji 表情數據庫存不了,或者顯示為???的問題

百度UEditor控制元件的map元件支援https使用的問題解決

最近專案部署到了https環境下,使用的UEditor富文字編輯器中的map元件出現了問題,控制檯報了一堆錯誤,主要是mixed content.. ,就連百度的官網上也同樣是有這些問題,汗。。 沒有辦法,只能四處搜尋解決問題的答案。。。 第一點收穫: https是安全傳輸協議,在

Vue開發父子元件之間的資料傳遞,有例項程式碼

我在專案過程中的一個小案例: <ImageSelector title="選擇使用者頭像" :multipy='false' :visible.sync='showDialog' :siteId='queryParams.siteId' @cancel-select='closeDia

easyUItree的預設載入子節點

$(document).ready(function() {     $('#comboboxtree').tree({  /* 傳送請求*/         url : 'comboboxtree?',         onLoadSuccess : function(n

EasyUITree及Datagrid的拼接

Tree的拼接格式 /** * 用於拼接前段tree的json格式 * @param fun * @return List<Functions> * @author youshang520i * @date 建立時間2018年6月20日下午9

分類任務資料類別平衡問題的幾種解決方案

類別不平衡(class-imbalance),是指分類任務中不同類別的訓練樣例數目差別很大的情況(例如,訓練集正類樣例10個,反類樣例90個),本文假設正類樣例較少,反類樣例較多。 現有解決方案大體分為三類,如下文所示。 欠取樣(undersampling) 欠取樣方法,即去除一

Easyui例項--tree元件的使用2

$(function(){ $("#tree").tree({ url:'getNodesByParentId.do?id=1',//請求路徑,id為根節點的id onLoadSuccess:function(node,data){

Easyui datagrid元件根據index更新一行記錄某個欄位值,增加一行記錄

$("#data_result").datagrid("updateRow",{ index:index, //行索引 row:{ isDefineP

EasyUI combotree 預設能選擇父節點

這需要新增如下欄位就行,搜了半天,說什麼判斷是不是子節點什麼的,都是胡扯! onlyLeafCheck:true, //病因分類 $('#artReason').combotree({width:200,method:'GET',   //url: '${ctx}/busi

python tkinter控制元件treeview的資料列表顯示的實現_code

素材檔案 result.txt result2.txt result.txt檔案的資料來源是爬取貓眼電影前一百名的電影,而result2.txt檔案只不過是內容上把result.txt的內容複製幾十次,使其資料足夠多,現截選如下: {"排名": "1", "片名": "霸

easyuitree的父節點id獲取

easyui中使用tree可以完美的展現樹形結構。如下圖 html程式碼如下: 使用cascadeCheck:true為級聯選中子節點,預設值為true。 <ul id="resourceTree" class="easyui-tree" data-options=

vue的axios.post使用json資料傳輸,出現請求頭欄位內容型別是被允許的情況的解決方案

問題描述: 由於restful介面需要在頭部header傳遞兩個欄位: Content-Type: application/json Access-Token: 84c6635800b14e0eba4f7ece65e095a1 但是,在vue.js裡面配置: 執行傳送的時候出現: 意思是

遞迴實現EasyUITree的Json格式

                   最近在做學校的基礎系統的時候前臺需要樹形的組織結構,由於前臺的整體框

easyuitab元件每次切換tab頁時內部頁面滾動條到頂端問題修改

使用easyui中的tab元件,每個tab頁面都是一個內嵌iframe,當在介面上滑鼠幾點做tab頁切換的時候,每次內部頁面的滾動條都會自動到頂端,這樣給使用上帶來了很大的不方便。接下來,我們看如何來優化這個功能。 首先,我們想到的時候給tab新增兩個事件:onSelect和onUnS