EasyUI中的tree用法介绍_jquery
真的是太忙了,本应该有好多东西可以写,但是没什么闲时间,每次想到写的时候,来点事就又给忘了。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
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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

easyui est un plug-in jquery. easyui est un plug-in d'interface d'interface utilisateur frontale basé sur JQuery, utilisé pour aider les développeurs Web à créer plus facilement des interfaces d'interface utilisateur fonctionnelles et esthétiques. easyui est un framework qui prend parfaitement en charge les pages Web HTML5, ce qui peut aider les développeurs à économiser le temps et l'ampleur du développement Web.

tree est un outil de ligne de commande qui répertorie de manière récursive le contenu d'un répertoire dans un format arborescent, de sorte que tous les répertoires, sous-répertoires et fichiers soient répertoriés de manière hiérarchique, affichant ainsi visuellement la structure organisationnelle des fichiers et des dossiers. Voici l'installation et l'utilisation de Tree sous les systèmes Windows et Linux. Installation et utilisation de Tree sous Linux : aptupdate&&aptinstalltree Voici les méthodes courantes d'utilisation de la commande Tree. #Afficher l'arborescence des répertoires sous le chemin spécifié tree/d/temp#Limiter la profondeur d'affichage maximale tree-L3#Afficher uniquement les répertoires mais pas les fichiers tree-d#Afficher y compris les fichiers et répertoires cachés tr

Utilisez jQueryEasyUI pour créer une interface Web moderne Avec le développement rapide d'Internet aujourd'hui, la conception Web devient de plus en plus importante. Afin d’attirer les utilisateurs, d’améliorer l’expérience utilisateur et de faire preuve de professionnalisme, il est crucial de concevoir une interface Web moderne. Afin d'atteindre cet objectif, nous pouvons utiliser jQueryEasyUI, un excellent framework front-end, pour simplifier le processus de développement. Ce qui suit présentera comment utiliser jQueryEasyUI pour créer une interface Web moderne et fournira quelques exemples de code spécifiques. qu'est-ce que

Avec le développement d'Internet, de plus en plus d'entreprises ont besoin de développer un système de gestion back-end efficace pour gérer et traiter les données afin de fournir un soutien solide au développement de l'entreprise. Dans ce contexte, PHP et jQueryEasyUI sont devenus des technologies de développement très populaires. PHP est un langage de script côté serveur largement utilisé. Il présente les avantages d'être open source, multiplateforme, facile à apprendre et à utiliser, et dispose d'une riche bibliothèque de fonctions et d'un grand nombre de frameworks open source, qui peuvent rapidement créer un système efficace. système de gestion back-end. Et jQueryEasyU

jQueryEasyUI est un framework de plug-ins d'interface utilisateur basé sur jQuery. Il fournit une multitude de composants d'interface et de plug-ins faciles à utiliser, qui peuvent aider les développeurs à créer rapidement des pages Web belles et puissantes. Dans cet article, nous explorerons l'inspiration et les techniques de conception Web apportées par l'utilisation de jQuery EasyUI, et donnerons des exemples de code spécifiques. 1. Mise en page réactive Le design réactif est une tendance importante dans la conception Web moderne, qui permet aux pages Web de présenter la meilleure expérience utilisateur sur différents appareils. jQuery

jQuery est un framework JavaScript populaire largement utilisé dans le développement Web, et jQueryEasyUI est un ensemble de bibliothèques de plug-ins d'interface utilisateur simples et faciles à utiliser développées sur la base de jQuery. Cet article présentera plusieurs excellents plug-ins jQueryEasyUI et donnera des exemples de code spécifiques pour vous aider à commencer à utiliser ces plug-ins plus rapidement. 1.DataGrid (table de données) DataGrid est un plug-in permettant d'afficher des données dans des tableaux, prenant en charge le chargement, le tri, le filtrage, etc.

Comment créer des pages Web interactives avec jQueryEasyUI ? Dans la conception Web moderne, les pages Web interactives sont devenues l’un des facteurs clés pour attirer les utilisateurs et améliorer leur expérience. Afin de réaliser la conception de pages Web interactives, les développeurs doivent utiliser diverses technologies et outils pour réaliser l'interaction des utilisateurs avec les pages Web. Parmi eux, jQueryEasyUI, en tant que puissante bibliothèque JavaScript open source, fournit des composants d'interface utilisateur riches et de puissantes fonctions interactives, qui peuvent aider les développeurs à créer rapidement des interactions belles et riches en fonctionnalités.

jQueryEasyUI : Rendre la conception Web plus efficace Avec le développement rapide d'Internet, la conception Web est devenue un élément indispensable de la société moderne. Afin d'améliorer l'efficacité et la qualité de la conception Web, les développeurs front-end doivent utiliser d'excellents outils et frameworks. Parmi eux, jQueryEasyUI est un outil très populaire et pratique. Il fournit une variété de composants et de plug-ins d'interface utilisateur, qui peuvent aider les développeurs à créer rapidement des interfaces Web belles et riches en fonctionnalités. jQueryEasyUI est la base
