웹 프론트엔드 JS 튜토리얼 EasyUI_jquery의 트리 사용 소개

EasyUI_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 행;
var noinf=0;
$(function() {
$('#treewindow').window({
title: treeTitle,
너비: 400,
높이: 400,
모달: true,
그림자: false,
닫힘: true,
크기 조정 가능: false,
최대화 가능: false,
최소화 가능 : false,
접을 수 있음: false
});
})
function treeWindowOpen(name,rowIndx) {
$('#treewindow').window('open');
nodekeep="";
nodeExp=false;
rows=rowIndx.toString()
$('#basetree').tree({
체크박스: 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()),
캐시 : false,
async: false,
dataType: "json",
success: function(data) {
if(nodekeep.indexOf(node.id)==-1)
{
append(데이터, 노드);
nodeExp = true;
}
})
$("#radCollapse").removeAttr("checked") ;
},
onLoadError:function(Error)
{
$.messager.alert('prompt', '쿼리 문 오류', 'error')
if(nodeExp= = false)
{
$("#basetree").children().remove()
}
},
onLoadSuccess:function(success)
{
var child=$("#basetree").children().length;
noinf
if(child==0&&noinf>1)
{
$.messager.alert('hint ' , '데이터가 존재하지 않습니다', '정보')
}
}
})

}
function treeWindowClose() {
$('# treewindow' ).window('close');
nodekeep="";
nodekeep=false;
}
function treeWindowSubmit() {
var 노드 = $('#basetree' ).tree('getChecked');
var info = '';
if (nodes.length > 0) {
for (var i = 0; i < node.length; i ) {
if (info != '') { info = ','; }
info = node[i].text
}
//alert(JSON.stringify(nodes)) ;
}
else {
var node = $('#basetree').tree('getSelected')
if (node ​​​​!= null) {
info = node .text;
}
}
$("#" 행).val(info)
$('#treewindow').window('close'); "";
nodeExp=false;
}
//모두 확장
functioncollapseAll() {
$("#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
}
//Reload
function reload() {
var node = $('#basetree').tree('getSelected')
if (노드) {
$('#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" %>
시스템 사용;
System.Collections 사용;
System.Data 사용;
System.Linq 사용;
System.Web 사용;
System.Web.Services 사용;
System.Web.Services.Protocols 사용;
System.Xml.Linq 사용;
System.Collections.Generic 사용;
공용 클래스 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.Empty;
string colName = string.Empty;
문자열 sql = 문자열.비어 있음;
string Casname = string.Empty;
부울 콜트 = false;
문자열 아이콘 = "아이콘-프로필";
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 = 거짓;
}
휴식;
}
}
}
}
}
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();
휴식;
}
}
}
}
시도
{
if (parentId != "" && colt == true)
{
//此处省略得到数据列表的代码
목록 ltree = DAL_TreeInfo.GetItemValue(parentId, sql);
resultStr = "";
resultStr = "[";
if (ltree.Count > 0)
{
foreach (ltree의 TreeInfo 항목)
{
attributes = "";
속성 = "{"cas":"" Casname;
속성 = "","val":"" item._text ""}";
resultStr = "{";
resultStr = string.Format(""id": "{0}", "text": "{1}", "iconCls": "{2}", "attributes": {3}, "state ": "닫음"", item._id, item._text, 아이콘, 속성);
resultStr = "},";
}
resultStr = resultStr.Substring(0, resultStr.Length - 1);
}
resultStr = "]";
}
else
{
resultStr = "[]";
}
}
catch(예외예외)
{
resultStr = "出错";
}
context.Response.Write(resultStr);
}
public bool IsReusable
{
get
{
return false;
}
}
}

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

  작은弟재此献丑了,不知道各位专家、同仁有没有遇到类似的问题,或者有其它更매우 유용한 정보입니다.

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

작곡자 : ZHF  
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

easyui는 jquery 플러그인인가요? easyui는 jquery 플러그인인가요? Jul 05, 2022 pm 06:08 PM

easyui는 jquery 플러그인입니다. easyui는 JQuery 기반의 프런트 엔드 UI 인터페이스 플러그인으로, 웹 개발자가 기능이 풍부하고 아름다운 UI 인터페이스를 보다 쉽게 ​​만들 수 있도록 도와줍니다. easyui는 HTML5 웹 페이지를 완벽하게 지원하는 프레임워크로, 개발자가 웹 개발 시간과 규모를 절약할 수 있도록 도와줍니다.

tree를 사용하여 표시할 파일 디렉터리 트리를 생성합니다. tree를 사용하여 표시할 파일 디렉터리 트리를 생성합니다. Mar 01, 2024 pm 05:46 PM

tree는 디렉터리의 내용을 트리 형식으로 반복적으로 나열하여 모든 디렉터리, 하위 디렉터리 및 파일을 계층적으로 나열함으로써 파일과 폴더의 조직 구조를 시각적으로 표시하는 명령줄 도구입니다. 다음은 Windows 및 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를 기반으로 한 사용자 인터페이스 플러그인 프레임워크로, 개발자가 아름답고 강력한 웹 페이지를 빠르게 구축하는 데 도움이 되는 풍부한 사용하기 쉬운 인터페이스 구성 요소와 플러그인을 제공합니다. 이 기사에서는 jQuery EasyUI를 사용하여 얻은 웹 디자인 영감과 기술을 살펴보고 구체적인 코드 예제를 제공합니다. 1. 반응형 레이아웃 반응형 디자인은 현대 웹 디자인의 중요한 트렌드로, 웹 페이지가 다양한 장치에서 최상의 사용자 경험을 제공할 수 있도록 해줍니다. jQuery

조작하기 쉬운 추천 jQuery EasyUI 플러그인 조작하기 쉬운 추천 jQuery EasyUI 플러그인 Feb 25, 2024 pm 09:33 PM

jQuery는 웹 개발에 널리 사용되는 인기 있는 JavaScript 프레임워크이며, jQueryEasyUI는 jQuery를 기반으로 개발된 간단하고 사용하기 쉬운 UI 플러그인 라이브러리 세트입니다. 이 기사에서는 몇 가지 뛰어난 jQueryEasyUI 플러그인을 소개하고 이러한 플러그인을 더 빠르게 사용하는 데 도움이 되는 특정 코드 예제를 제공합니다. 1.DataGrid(데이터 테이블) DataGrid는 데이터를 테이블에 표시하고 데이터 로드, 정렬, 필터링 등을 지원하는 플러그인입니다.

대화형 웹 페이지를 만드는 방법: jQuery EasyUI 사용 대화형 웹 페이지를 만드는 방법: jQuery EasyUI 사용 Feb 25, 2024 pm 09:09 PM

jQueryEasyUI를 사용하여 대화형 웹 페이지를 만드는 방법은 무엇입니까? 현대 웹 디자인에서 대화형 웹 페이지는 사용자를 유치하고 사용자 경험을 향상시키는 핵심 요소 중 하나가 되었습니다. 대화형 웹 페이지의 디자인을 실현하기 위해 개발자는 웹 페이지와의 사용자 상호 작용을 실현할 수 있는 다양한 기술과 도구를 사용해야 합니다. 그중에서도 강력한 오픈 소스 JavaScript 라이브러리인 jQueryEasyUI는 풍부한 UI 구성 요소와 강력한 대화형 기능을 제공하여 개발자가 아름답고 기능이 풍부한 상호 작용을 빠르게 구축하는 데 도움을 줍니다.

웹 디자인 프로세스 단순화: jQuery EasyUI 웹 디자인 프로세스 단순화: jQuery EasyUI Feb 24, 2024 pm 09:57 PM

jQueryEasyUI: 웹 디자인을 더욱 효율적으로 만듭니다. 인터넷의 급속한 발전으로 인해 웹 디자인은 현대 사회에서 없어서는 안 될 부분이 되었습니다. 웹 디자인의 효율성과 품질을 향상시키기 위해 프런트엔드 개발자는 뛰어난 도구와 프레임워크를 사용해야 합니다. 그중 jQueryEasyUI는 매우 인기 있고 실용적인 도구로, 개발자가 아름답고 기능이 풍부한 웹 인터페이스를 빠르게 구축하는 데 도움이 되는 다양한 UI 구성 요소와 플러그인을 제공합니다. jQueryEasyUI가 기본입니다

See all articles