首頁 web前端 js教程 EasyUI中的tree用法介绍_jquery

EasyUI中的tree用法介绍_jquery

May 16, 2016 pm 05:59 PM
easyui tree

真的是太忙了,本应该有好多东西可以写,但是没什么闲时间,每次想到写的时候,来点事就又给忘了。10月最后一天了,在忙也得把这篇文章写完,不然又得多一个空白月了。

  这是之前带领成员开发一个小模块功能的时候,需要用到弹出窗口加载树状级联单位选择,最后决定用采用jQuery+EasyUI插件进行开发。但是在使用EasyUI中tree的插件时,碰到了不少麻烦。为了提供弹出树的显示速度,就采用异步加载数节点值,首先先加载根节点,然后根据点击的节点展开加载子节点。

  往往结果和预期的都不一样,困惑了几天,展开后子节点是动态加载了,但是收缩后无法清空之前填充的数据;第二次在展开时,子节点又被重复加载了一遍,造成了数据重复显示,并没有提供清除子节点的方法。想尽了各种办法来解决这个问题,只能换另一种形式加载子节点的值了,把每一个节点值保存起来,判断是否已经存在,存在就不在去加载。

  两种方法见实例:

复制代码 代码如下:

var treeTitle = '选择列表';
var treeUrl = '../DataAshx/getTreeNode.ashx?pid=-1';
var nodeExp=false;
var nodekeep="";
var rows;
var noinf=0;
$(function() {
$('#treewindow').window({
title: treeTitle,
width: 400,
height: 400,
modal: true,
shadow: false,
closed: true,
resizable: false,
maximizable: false,
minimizable: false,
collapsible: false
});
});
function treeWindowOpen(name,rowIndx) {
$('#treewindow').window('open');
nodekeep="";
nodeExp=false;
rows=rowIndx.toString();
$('#basetree').tree({
checkbox: true,
animate: true,
url: treeUrl+"&coln="+escape(name.toString()),
cascadeCheck: true,
onlyLeafCheck: false,
onBeforeExpand: function(node, param) {
//------------第一种方法:异步加载子节点值-------------
// $('#basetree').tree('options').url = "../DataAshx/getTreeNode.ashx?pid=" + node.id+"&coln="+escape(name.toString());

//------------第二种方法:Ajax方法返回子节点Json值,使用append方法加载子节点
$.ajax({
type: "POST",
url: "../DataAshx/getTreeNode.ashx?pid=" + node.id+"&coln="+escape(name.toString())+"&casn="+escape(node.attributes.cas.toString()),
cache: false,
async: false,
dataType: "json",
success: function(data) {
if(nodekeep.indexOf(node.id)==-1)
{
append(data, node);
nodeExp = true;
}
}
});
$("#radCollapse").removeAttr("checked");
},
onLoadError:function(Error)
{
$.messager.alert('提示', '查询语句出错', 'error');
if(nodeExp==false)
{
$("#basetree").children().remove();
}
},
onLoadSuccess:function(success)
{
var child=$("#basetree").children().length;
noinf++;
if(child==0&&noinf>1)
{
$.messager.alert('提示', '数据不存在', 'Info');
}
}
});

}
function treeWindowClose() {
$('#treewindow').window('close');
nodekeep="";
nodekeep=false;
}
function treeWindowSubmit() {
var nodes = $('#basetree').tree('getChecked');
var info = '';
if (nodes.length > 0) {
for (var i = 0; i if (info != '') { info += ','; }
info += nodes[i].text;
}
//alert(JSON.stringify(nodes));
}
else {
var node = $('#basetree').tree('getSelected');
if (node != null) {
info = node.text;
}
}
$("#"+rows).val(info);
$('#treewindow').window('close');
nodekeep="";
nodeExp=false;
}
//全部展开
function collapseAll() {
$("#radCollapse").attr("checked", "checked");
var node = $('#basetree').tree('getSelected');
if (node) {
$('#basetree').tree('collapseAll', node.target);
} else {
$('#basetree').tree('collapseAll');
}
}
//全部收缩
function expandAll() {
var node = $('#basetree').tree('getSelected');
if (node) {
$('#basetree').tree('expandAll', node.target);
} else {
$('#basetree').tree('expandAll');
}
}
//增加子节点
function append(datas,cnode) {
var node = cnode;
$('#basetree').tree('append', {
parent: node.target,
data: datas
});
nodekeep+=","+node.id;
}
//重新加载
function reload() {
var node = $('#basetree').tree('getSelected');
if (node) {
$('#basetree').tree('reload', node.target);
} else {
$('#basetree').tree('reload');
}
}
//删除子节点
function remove() {
var node = $('#basetree').tree('getSelected');
$('#basetree').tree('remove',node.target);
}

页面getTreeNode.ashx返回树节点JSON格式数据:
复制代码 代码如下:


using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Collections.Generic;
public class getTreeNode : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
DataTable dt = (DataTable)context.Session["viewmaintain"];
string parentId = string.Empty;
string resultStr = string.Empty;
string attributes = string.Empty;
string colName = string.Empty;
string sql = string.Empty;
string Casname = string.Empty;
bool colt = false;
string icon = "icon-profile";
if (!string.IsNullOrEmpty(context.Request.QueryString["pid"]))
{
parentId = context.Request.QueryString["pid"].ToString();
}
if ((!string.IsNullOrEmpty(context.Request.QueryString["coln"])) && (string.IsNullOrEmpty(context.Request.QueryString["casn"])))
{
colName = HttpUtility.UrlDecode(context.Request.QueryString["coln"].ToString());
if (dt != null)
{
bool pt = true;
while (pt)
{
for (int i = 0; i {
Casname = dt.Rows[i]["view_colname"].ToString();
if (dt.Rows[i]["view_colname"].ToString() == colName)
{
if (dt.Rows[i]["view_cas"].ToString() != null&&dt.Rows[i]["view_cas"].ToString() !="")
{
colName = dt.Rows[i]["view_cas"].ToString();
}
else
{
colt = true;
sql = dt.Rows[i]["view_sql"].ToString();
pt = false;
}
break;
}
}
}
}
}
if ((!string.IsNullOrEmpty(context.Request.QueryString["casn"])) && (!string.IsNullOrEmpty(context.Request.QueryString["coln"])))
{
string casnName = HttpUtility.UrlDecode(context.Request.QueryString["casn"].ToString());
colName = HttpUtility.UrlDecode(context.Request.QueryString["coln"].ToString());
if (dt != null)
{
for (int i = 0; i {
Casname = dt.Rows[i]["view_colname"].ToString();
if (dt.Rows[i]["view_cas"].ToString() == casnName && casnName != colName)
{
colt = true;
sql = dt.Rows[i]["view_sql"].ToString();
break;
}
}
}
}
try
{
if (parentId != "" && colt == true)
{
//此处省略得到数据列表的代码
List ltree = DAL_TreeInfo.GetItemValue(parentId, sql);
resultStr = "";
resultStr += "[";
if (ltree.Count > 0)
{
foreach (TreeInfo item in ltree)
{
attributes = "";
attributes += "{\"cas\":\"" + Casname;
attributes += "\",\"val\":\"" + item._text + "\"}";
resultStr += "{";
resultStr += string.Format("\"id\": \"{0}\", \"text\": \"{1}\", \"iconCls\": \"{2}\", \"attributes\": {3}, \"state\": \"closed\"", item._id, item._text, icon, attributes);
resultStr += "},";
}
resultStr = resultStr.Substring(0, resultStr.Length - 1);
}
resultStr += "]";
}
else
{
resultStr = "[]";
}
}
catch (Exception ex)
{
resultStr = "出错";
}
context.Response.Write(resultStr);
}
public bool IsReusable
{
get
{
return false;
}
}
}

关键性的代码都已经在上面了,目前也就只能想到这种办法来解决了,有时间的话可以给tree扩展一下,添加一个清除子节点的方法,这样应该实现起来会更容易方便。

  小弟在此献丑了,不知道各位专家、同仁有没有遇到类似的问题,或者有其它更好的解决办法,欢迎在这交流。

  同时也感谢各位抽出宝贵的时间阅读文章,让我们共同进步,共同分享交流,在节省他人的时间就是提高自己~~~

作者:ZHF  
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

easyui是jquery插件嗎 easyui是jquery插件嗎 Jul 05, 2022 pm 06:08 PM

easyui是jquery插件。 easyui是基於JQuery的一個前台ui介面的插件,用於幫助web開發者更輕鬆的打造出功能豐富且美觀的UI介面。 easyui是個完美支援HTML5網頁的框架,可以幫助開發者節省網頁開發的時間和規模。

使用tree生成檔案目錄樹進行展示 使用tree生成檔案目錄樹進行展示 Mar 01, 2024 pm 05:46 PM

tree是一個命令列工具,它以樹狀格式遞歸地列出一個目錄的內容,使得所有的目錄、子目錄和文件以分層的方式列出,從而直觀地展示文件和資料夾的組織結構。以下是tree在Windows和Linux系統下的安裝與使用方法Linux下tree的安裝與使用Linux下安裝tree:aptupdate&&aptinstalltree以下是tree指令的常用方式。 #顯示指定路徑下的目錄樹tree/d/temp#限制最大的展示深度tree-L3#只顯示目錄不顯示檔案tree-d#顯示包含隱藏的檔案和目錄tr

使用jQuery EasyUI創建現代化的網頁介面 使用jQuery EasyUI創建現代化的網頁介面 Feb 23, 2024 pm 10:18 PM

利用jQueryEasyUI打造現代化網頁介面在現今網路的快速發展中,網頁設計變得越來越重要。為了吸引使用者、提升使用者體驗以及展現專業性,設計一個現代化的網頁介面至關重要。為了實現這個目標,我們可以利用jQueryEasyUI這個優秀的前端框架來簡化開發流程。以下將介紹如何利用jQueryEasyUI打造現代化網頁介面,並提供一些具體的程式碼範例。什麼是

使用PHP和jQuery EasyUI開發一個高效率的後台管理系統 使用PHP和jQuery EasyUI開發一個高效率的後台管理系統 Jun 27, 2023 pm 01:21 PM

隨著網路的發展,越來越多的企業需要開發一個高效的後台管理系統來管理和處理數據,為企業的發展提供強大的支援。在這樣的背景下,PHP和jQueryEasyUI成為了非常受歡迎的開發技術。 PHP是一種廣泛應用的伺服器端腳本語言,具有開源、跨平台、易學易用等優點,並且擁有豐富的函數庫和大量的開源框架,可以快速地建立一個高效的後台管理系統。而jQueryEasyU

探索jQuery EasyUI的網頁設計靈感與技巧 探索jQuery EasyUI的網頁設計靈感與技巧 Feb 25, 2024 pm 09:12 PM

jQueryEasyUI是一個基於jQuery的使用者介面插件框架,它提供了豐富的易用的介面元件和插件,可以幫助開發者快速建立美觀且功能強大的網頁。在本文中,我們將探討透過使用jQueryEasyUI帶來的網頁設計靈感與技巧,並給出具體的程式碼範例。 1.響應式版面響應式設計是現代網頁設計的重要趨勢,它可以讓網頁在不同裝置上呈現最佳的使用者體驗。 jQuery

推薦易於操作的jQuery EasyUI插件 推薦易於操作的jQuery EasyUI插件 Feb 25, 2024 pm 09:33 PM

jQuery是一款受歡迎的JavaScript框架,廣泛應用於Web開發中,而jQueryEasyUI是基於jQuery開發的一套簡單易用的UI插件庫。本文將介紹幾款優秀的jQueryEasyUI插件,並給予具體的程式碼範例,幫助大家更快上手使用這些插件。 1.DataGrid(資料表格)DataGrid是一個表格展示資料的插件,支援資料的載入、排序、篩選等

創建互動式網頁的方法:利用jQuery EasyUI 創建互動式網頁的方法:利用jQuery EasyUI Feb 25, 2024 pm 09:09 PM

如何使用jQueryEasyUI建立互動式網頁?在現代網頁設計中,互動式網頁已成為吸引使用者和提升使用者體驗的關鍵因素之一。為了實現互動式網頁的設計,開發人員需要利用各種技術和工具來實現使用者與網頁的互動。其中,jQueryEasyUI作為一個強大的開源JavaScript庫,提供了豐富的UI元件和強大的互動功能,能夠幫助開發人員快速建立漂亮、功能豐富的交

簡化網頁設計流程:jQuery EasyUI 簡化網頁設計流程:jQuery EasyUI Feb 24, 2024 pm 09:57 PM

jQueryEasyUI:讓網頁設計更有效率地隨著網路的快速發展,網頁設計已經成為了現代社會中不可或缺的一部分。為了提高網頁設計的效率和質量,前端開發人員需要使用一些優秀的工具和框架。其中,jQueryEasyUI是一個非常受歡迎且實用的工具,它提供了多種UI元件和插件,能夠幫助開發人員快速建立美觀且功能豐富的網頁介面。 jQueryEasyUI是基

See all articles