手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
摘要:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;...

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.Linq;

using System.Xml;

using System.Xml.Linq;

namespace WebApplication3 {

public partial class WebForm1: System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e) {

int id = Convert.ToInt32(Request["parentID"]);

GetXML(id);

}

public IList < Product > GetList() {

return new List < Product > () {

new Product() {

Id = 1,

ParentId = 0,

HasChild = 1,

Name = "aaaaa"

},

new Product() {

Id = 2,

ParentId = 1,

HasChild = 1,

Name = "bbbb1"

},

new Product() {

Id = 3,

ParentId = 2,

HasChild = 0,

Name = "ccccc2"

},

new Product() {

Id = 4,

ParentId = 2,

HasChild = 0,

Name = "ddddd3"

},

new Product() {

Id = 5,

ParentId = 1,

HasChild = 0,

Name = "eeeeee4"

},

new Product() {

Id = 6,

ParentId = 3,

HasChild = 0,

Name = "ffffff5"

},

new Product() {

Id = 7,

ParentId = 4,

HasChild = 0,

Name = "ggggggg6"

},

new Product() {

Id = 8,

ParentId = 7,

HasChild = 0,

Name = "hhhhhhh7"

},

new Product() {

Id = 9,

ParentId = 0,

HasChild = 0,

Name = "jjjjjjj8"

},

new Product() {

Id = 10,

ParentId = 0,

HasChild = 0,

Name = "yyyyyyyy9"

}

};

} /// <summary>

/// 通过父节点读取子节点并且拼接成xml给前台

/// </summary>

/// <param name="parentId"></param>

public void GetXML(int parentId) {

List<Product> list = GetList().Where(x => x.ParentId == parentId).ToList();

XElement xElement = new XElement("textTree");

foreach (Product p in list) {

xElement.Add(new XElement("value", new XAttribute("id", p.Id),p.Name));

}

xElement.Save("d:kissnana.xml");

XmlDocument xdocument = new XmlDocument();

xdocument.Load("d:kissnana.xml");

Response.ContentType = "text/xml";

xdocument.Save(Response.OutputStream);

Response.End();

}

}

public class Product {

public int Id{set;get;}

public int ParentId{set;get;}

public int HasChild{set;get;}

public string Name{set;get;}

}}

思路很简单,后台利用xml送往前台通过jquery接收处理拼接ul,

li原理(利用 < li > 中嵌套 < ul > 的方式,局部读取一节点下的所有直属子节点,每次点击读取,读取过的话,则进入GetDisplayOrNot()方法判断显示和隐藏节点)html代码: < body > <form id = "form1"

runat = "server" > <input type = "button"

value = "text"

onclick = "LoadXml(0)" / ><div id = "root" > </div>

</form >

</body>

前台代码:

复制代码 代码如下:

<script type="text/javascript">

var object1 = null;

function LoadXml(id) {

$.ajax({

type: "

post ",

url:"

WebForm1.aspx ? parentID = "+id,

dataType:"

xml ",

success: createTree

});

}

// 思路是每个父节点产生一个ul孩子并且ajax读取该父亲的直接儿子,拼接树

function createTree(xml) {

var obj = object1 == null ? ("#root ") : (object1);//判断是不是第一次加载,如果第一次加载则是最外的div的id,否则是父节点

$(obj).append(" < UL class = 'ULfather' > ");//添加ul对象

$(xml).find("

value ").each(function() {//从xml里读出所有value节点信息,得到当前层次节点

//拼接<li>和<a>,属性通过xml中的value节点的属性id和节点文本进行拼接

$(obj).children(".ULfather ").append(" < li > <a id = " + $(this).attr("

id ") + " > " + $(this).text() + " < /a></li > ");

var alink = "#" + $(this).attr("

id "); //得到当前超链接对象

$(alink).bind("

click ", function() { //超连接绑定点击事件

if ($(alink + " + ul ").size() <= 0) {//如果数据已经绑定则无需再次绑定,(如果超链接下个元素是ul的话,说明数据已经绑过)

object1 = $(alink).parent("

li ");

LoadXml($(this).attr("

id "))

}

else {

GetDisplayOrNot($(alink));

}

});

});

}

//节点显示或影藏

function GetDisplayOrNot(obj) {

if ($(obj).parent("

li ").children("

ul ").is(": hidden ")) {

$(obj).parent("

li ").children("

ul ").css("

display ", "

block ");

}

else {

$(obj).parent("

li ").children("

ul ").css("

display ", "

none ");

}

}

</script>

后台:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.Linq;

using System.Xml;

using System.Xml.Linq;

namespace WebApplication3

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

int id =Convert.ToInt32(Request["parentID"]);

GetXML(id);

}

public IList<Product> GetList()

{

return new List<Product>()

{

new Product(){ Id=1, ParentId=0, HasChild=1, Name="aaaaa" },

new Product(){ Id=2, ParentId=1, HasChild=1, Name="bbbb1" },

new Product(){ Id=3, ParentId=2, HasChild=0, Name="ccccc2" },

new Product(){ Id=4, ParentId=2, HasChild=0, Name="ddddd3" },

new Product(){ Id=5, ParentId=1, HasChild=0, Name="eeeeee4" },

new Product(){ Id=6, ParentId=3, HasChild=0, Name="ffffff5" },

new Product(){ Id=7, ParentId=4, HasChild=0, Name="ggggggg6" },

new Product(){ Id=8, ParentId=7, HasChild=0, Name="hhhhhhh7" },

new Product(){ Id=9, ParentId=0, HasChild=0, Name="jjjjjjj8" },

new Product(){ Id=10,ParentId=0, HasChild=0, Name="yyyyyyyy9" }

};

}

/// <summary>

/// 通过父节点读取子节点并且拼接成xml给前台

/// </summary>

/// <param name="parentId"></param>

public void GetXML(int parentId)

{

List<Product> list = GetList().Where(x => x.ParentId == parentId).ToList();

XElement xElement = new XElement("textTree");

foreach (Product p in list)

{

xElement.Add(new XElement("value", new XAttribute("id", p.Id),p.Name));

}

xElement.Save("d:kissnana.xml");

XmlDocument xdocument = new XmlDocument();

xdocument.Load("d:kissnana.xml");

Response.ContentType = "text/xml";

xdocument.Save(Response.OutputStream);

Response.End();

}

}

public class Product

{

public int Id{set;get;}

public int ParentId{set;get;}

public int HasChild{set;get;}

public string Name{set;get;}

}

}

【一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)】相关文章:

跨浏览器的设置innerHTML方法

jQuery的基本概念与高级编程

JavaScript实现自动变换表格边框颜色

JQuery插件ajaxfileupload.js异步上传文件实例

Javascript实现div层渐隐效果的方法

Javascript中For In语句用法实例

一个特帅的展示图片的js+css

javascript获取文档坐标和视口坐标

基于jQuery实现的无刷新表格分页实例

JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

精品推荐
分类导航