亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

淺析jQuery EasyUI中的tree使用指南

2024-05-06 16:12:25
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了淺析jQuery EasyUI中的tree的用法,是根據個人對此的理解來實現的,需要的朋友可以參考下
 
 

  本文記錄的是帶領成員開發一個小模塊功能的時候,需要用到彈出窗口加載樹狀級聯單位選擇,最后決定用采用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 < nodes.length; 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格式數據:

 

復制代碼代碼如下:

<%@ WebHandler Language="C#" Class="getTreeNode" %>
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 < dt.Rows.Count; 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 < dt.Rows.Count; 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<TreeInfo> 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擴展一下,添加一個清除子節點的方法,這樣應該實現起來會更容易方便。

 

  小弟在此獻丑了,不知道各位專家、同仁有沒有遇到類似的問題,或者有其它更好的解決辦法,歡迎在這交流。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
xvideos亚洲人网站| 一区二区三区视频观看| 98视频在线噜噜噜国产| 奇米成人av国产一区二区三区| 欧美性videos高清精品| 68精品久久久久久欧美| 亚洲全黄一级网站| 国产精品白丝av嫩草影院| 国产精品旅馆在线| 亚洲精品v欧美精品v日韩精品| 亚洲最大的网站| 中文字幕亚洲在线| 国产成人一区三区| 欧美高清电影在线看| 亚洲精品乱码久久久久久金桔影视| 日本精品免费观看| 2021久久精品国产99国产精品| 米奇精品一区二区三区在线观看| 日韩av在线免费播放| 亚洲国产天堂久久国产91| 欧美午夜精品久久久久久人妖| 成人国产亚洲精品a区天堂华泰| 欧美一区二区三区免费观看| 欧美中在线观看| 91av在线播放视频| 久久久久久欧美| 国产精品美腿一区在线看| 91系列在线播放| 欧美高清电影在线看| 成人免费观看49www在线观看| 精品国内自产拍在线观看| 成人在线视频网站| 91国产高清在线| 亚洲国产91精品在线观看| 国产在线播放91| 中文国产亚洲喷潮| 91九色精品视频| 亚洲成人激情图| 日本久久久久久久久| 在线精品视频视频中文字幕| 97久久精品人人澡人人爽缅北| 91精品在线播放| 亚洲色图综合久久| 九九久久久久久久久激情| 日韩亚洲精品视频| 日韩a**站在线观看| 日韩视频欧美视频| 国模精品视频一区二区| 福利微拍一区二区| 亚洲人线精品午夜| 色噜噜狠狠狠综合曰曰曰88av| 2019中文字幕在线免费观看| 国产精品久久久久9999| 欧美激情成人在线视频| 久久精品国产免费观看| 欧美激情手机在线视频| 亚洲美腿欧美激情另类| xxxxxxxxx欧美| 亚洲精品免费av| 亚洲成色777777女色窝| 欧美日韩一区二区免费视频| 色综合导航网站| 国语自产精品视频在线看抢先版图片| 久青草国产97香蕉在线视频| 亚洲另类激情图| 久久精品视频在线播放| 亚洲jizzjizz日本少妇| 国产精品va在线播放我和闺蜜| 岛国av一区二区三区| 精品女同一区二区三区在线播放| 精品国产91久久久久久老师| 亚洲的天堂在线中文字幕| 国产欧美日韩亚洲精品| 成人黄色影片在线| 欧美成在线观看| 国产成人精品网站| 国内伊人久久久久久网站视频| 国产噜噜噜噜噜久久久久久久久| 韩国福利视频一区| 欧美日韩高清区| 午夜精品久久久久久久男人的天堂| 亚洲伊人成综合成人网| 欧美一级电影久久| 久久精品成人动漫| 亚洲精品福利资源站| 久久久国产精彩视频美女艺术照福利| 欧美主播福利视频| 亚洲一区二区国产| 国内精品久久久久久久久| 国产一区视频在线| 日本成人激情视频| 亚洲韩国欧洲国产日产av| 欧美成人性色生活仑片| 欧美激情视频给我| 欧美一区二区大胆人体摄影专业网站| 亚洲乱码av中文一区二区| 欧美视频专区一二在线观看| 精品视频—区二区三区免费| 久久6免费高清热精品| 国产ts一区二区| 日韩电影中文字幕| 精品国产一区二区在线| 亚洲一区二区三区香蕉| 久久精品中文字幕一区| 国产美女精品视频| 中文在线资源观看视频网站免费不卡| 日韩精品福利在线| 97国产真实伦对白精彩视频8| 久久免费视频网站| 欧美激情第6页| 亚洲午夜未删减在线观看| 欧美肥老妇视频| 欧美性猛交视频| 欧美猛交免费看| 日韩精品亚洲元码| 中文字幕日韩有码| 在线观看视频99| 精品亚洲一区二区三区四区五区| 成人情趣片在线观看免费| 欧美国产欧美亚洲国产日韩mv天天看完整| 精品久久久久久中文字幕| 国产午夜精品理论片a级探花| 日本韩国在线不卡| 国产日韩在线免费| 成人黄色中文字幕| 欧美疯狂xxxx大交乱88av| 国产在线观看精品一区二区三区| 国模私拍一区二区三区| 91精品视频大全| 国产精品www色诱视频| 国产91色在线播放| 欧美一级大胆视频| 国产噜噜噜噜噜久久久久久久久| 欧美大全免费观看电视剧大泉洋| 欧美精品日韩三级| 久久久精品一区| 久久777国产线看观看精品| 日本免费在线精品| 成人h片在线播放免费网站| 国产精品欧美激情在线播放| 性夜试看影院91社区| 亚洲精品福利在线观看| 日韩女优人人人人射在线视频| 福利视频导航一区| 国产精品久久久久久久久久ktv| 在线免费观看羞羞视频一区二区| 久久频这里精品99香蕉| 一区二区亚洲精品国产| 久久久91精品国产一区不卡| 亚洲国产另类 国产精品国产免费| 亚洲伦理中文字幕| 国产精品爽黄69| 国产精品国产自产拍高清av水多| 精品视频在线播放色网色视频| 欧美电影免费观看| 亚洲国产一区自拍| 亚洲欧美一区二区三区在线| 日韩欧美中文字幕在线播放| 黄色成人av在线| 亚洲三级免费看| 日韩中文字幕精品视频| 亚洲精品狠狠操| 亚洲欧美变态国产另类| 欧美在线观看一区二区三区|