-
请问这段c#+ajax代码是否能实现树子节点的动态下载?20
xml格式如下:
<st>
<Tasks> <Task> <UID>0 </UID> <ID>0 </ID> <Name>住宅建设 </Name> <OutlineNumber>0 </OutlineNumber> <Start>2004-01-01T08:00:00 </Start> <Finish>2004-07-30T17:00:00 </Finish> <Summary>1 </Summary> <PercentComplete>0 </PercentComplete> </Task> <Task> <UID>1 </UID> <ID>1 </ID> <Name>设计 </Name> <OutlineNumber>1 </OutlineNumber> <Start>2004-01-01T08:00:00 </Start> <Finish>2004-07-30T17:00:00 </Finish> <Summary>1 </Summary> <PercentComplete>0 </PercentComplete> </Task> <Task> <UID>2 </UID> <ID>2 </ID> <Name>一般要求 </Name> <OutlineNumber>1.1 </OutlineNumber> <Start>2004-01-01T08:00:00 </Start> <Finish>2004-01-29T17:00:00 </Finish> <Summary>1 </Summary> <PercentComplete>0 </PercentComplete> </Task> <Task> <UID>3 </UID> <ID>3 </ID> <Name>最终确定计划 </Name> <OutlineNumber>1.1.1 </OutlineNumber> <Start>2004-01-01T08:00:00 </Start> <Finish>2004-01-28T17:00:00 </Finish> <Summary>0 </Summary> <PercentComplete>0 </PercentComplete> </Task》 </st>
形式如下:
住宅建设
|
-设计
|
- 一般要求
|
-最终确定计划
在实际中树总共有三千多项,何用ajax实现数据的分批显示。private void getNextSiblingTask(string strOutlineNumber,int pageindex) { XmlDocument doc = new XmlDocument(); //取父任务的大纲级别号 String str = strOutlineNumber.Substring(0, strOutlineNumber.LastIndexOf(".")); String strCond="t.task_outline_num like '" + str + ".%' and t.task_outline_num not like '" + str + ".%.%'"; doc.AppendChild(CreateTasksNode(doc,strCond,pageindex)); Response.ContentType = "text/xml"; Response.Charset = "utf-8"; doc.Save(Response.OutputStream); Response.End(); doc=null; } //创建任务节点 private XmlElement CreateTasksNode(XmlDocument doc, String strCond,int pageindex) { System.Data.SqlClient.SqlDataAdapter myAdapter = new System.Data.SqlClient.SqlDataAdapter(); SqlConnection conn = new SqlConnection("user id=sa;password=sa;initial Catalog=test1;Data Source=localhost;"); //SqlConnection connection = new SqlConnection("user id=sa;password=sa;initial Catalog=test1;Data Source=localhost;"); //pagesize = int.Parse(Request.QueryString["pagesize"]); int pagesize = 5; //分批下载数据 DataTable dtTask = new DataTable(); String strSql = "SELECT top " + pagesize + " * from msp_tasks t where " + strCond + " and TASK_UID not in(SELECT top " + (pageindex - 1) * pagesize + " TASK_UID from msp_tasks t where " + strCond + ")"; myAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(strSql, conn); myAdapter.Fill(dtTask); DataTable dtLink = new DataTable(); DataView dvLink = dtLink.DefaultView; //DataRowView drvLink; strSql = "SELECT * from msp_links l inner join msp_tasks t on l.LINK_SUCC_UID=t.TASK_UID where " + strCond; myAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(strSql, conn); myAdapter.Fill(dtLink); dvLink.Sort = "LINK_SUCC_UID"; XmlElement tasksNode = doc.CreateElement("Tasks"); XmlElement taskNode, node; int i=0; foreach (DataRow drTask in dtTask.Rows) { i++; taskNode = doc.CreateElement("Task"); //ChildrenDataUrl taskNode.SetAttribute("ChildrenDataUrl", "XmlData.aspx?action=getFirstChildTask&OutlineNumber=" + drTask["TASK_OUTLINE_NUM"] + "&pagesize=" + pagesize); tasksNode.AppendChild(taskNode); node = doc.CreateElement("UID"); node.AppendChild(doc.CreateTextNode(drTask["TASK_UID"].ToString())); taskNode.AppendChild(node); node = doc.CreateElement("ID"); node.AppendChild(doc.CreateTextNode(drTask["TASK_ID"].ToString())); taskNode.AppendChild(node); node = doc.CreateElement("Name"); node.AppendChild(doc.CreateTextNode(drTask["TASK_Name"].ToString())); taskNode.AppendChild(node); node = doc.CreateElement("OutlineNumber"); node.AppendChild(doc.CreateTextNode(drTask["TASK_OUTLINE_NUM"].ToString())); taskNode.AppendChild(node); node = doc.CreateElement("Start"); node.AppendChild(doc.CreateTextNode(string.Format("{0:s}", drTask["TASK_START_DATE"]))); taskNode.AppendChild(node); node = doc.CreateElement("Finish"); node.AppendChild(doc.CreateTextNode(string.Format("{0:s}", drTask["TASK_FINISH_DATE"]))); taskNode.AppendChild(node); node = doc.CreateElement("TASK_LATE_START"); node.AppendChild(doc.CreateTextNode(string.Format("{0:s}", drTask["TASK_LATE_START"]))); taskNode.AppendChild(node); node = doc.CreateElement("Summary"); node.AppendChild(doc.CreateTextNode(((bool)drTask["TASK_IS_SUMMARY"] ? "1" : "0"))); taskNode.AppendChild(node); node = doc.CreateElement("PercentComplete"); node.AppendChild(doc.CreateTextNode(drTask["TASK_PCT_COMP"].ToString())); taskNode.AppendChild(node); XmlElement linksNode = doc.CreateElement("Links"); taskNode.AppendChild(linksNode); foreach (DataRowView drvLink in dvLink.FindRows(drTask["TASK_UID"])) { XmlElement predLink = doc.CreateElement("PredecessorLink"); linksNode.AppendChild(predLink); node = doc.CreateElement("PredecessorUID"); node.AppendChild(doc.CreateTextNode(drvLink["LINK_PRED_UID"].ToString())); predLink.AppendChild(node); node = doc.CreateElement("Type"); node.AppendChild(doc.CreateTextNode(drvLink["LINK_TYPE"].ToString())); predLink.AppendChild(node); } //如果已经到了指定页面大小 if (i == pagesize ) { taskNode.SetAttribute("[color=#FF0000]NextSiblingDataUrl[/color]", "XmlData.aspx?action=getNextSiblingTask&OutlineNumber=" + drTask["TASK_OUTLINE_NUM"] + "&pagesize=" + pagesize + "&pageindex=" + (pageindex + 1));//设置分页下载 break; } } dtTask.Dispose(); //dtLink.Dispose(); myAdapter.Dispose(); return tasksNode; }
特别是 taskNode.SetAttribute("ChildrenDataUrl", "XmlData.aspx?action=getFirstChildTask&OutlineNumber=" + drTask["TASK_OUTLINE_NUM"] + "&pagesize=" + pagesize);
这一句我不很明白,烦请高手解下惑!2009年7月20日 14:48
1个答案 按时间排序 按投票排序
-
不知道你的前端代码是怎么写的.
引用特别是 taskNode.SetAttribute("ChildrenDataUrl", "XmlData.aspx?action=getFirstChildTask&OutlineNumber=" + drTask["TASK_OUTLINE_NUM"] + "&pagesize=" + pagesize);
这一句我不很明白,烦请高手解下惑!
这个部分应是task这个节点,在设置它的子节点的连接的参数,我觉得应该你的前端页面中会解析这个部分,当单击当前这个节点的时候,它会去访问XmlData.aspx?action=getFirstChildTask&OutlineNumber=" + drTask["TASK_OUTLINE_NUM"] + "&pagesize=" + pagesize);这个地址,把所有的字节点的信息显出出来,在显示的 同时,又设定了每个子节点的子节点的访问地址.然后又可以往复的如此,显示所有的子节点.
2009年7月22日 23:44
相关推荐
在Java中,通过递归方法我们可以轻松地实现从父节点获取所有子节点的功能,这对于构建树形结构的应用程序(如文件系统、组织结构或菜单系统)非常有用。理解并掌握递归是每个程序员必备的技能之一。
数据结构二叉树子系统,用C++语言编写供初学者参考学习
二叉树是一种重要的数据结构,它在...在"BiTree"这个压缩包中,可能包含了实现这些功能的源代码,供学习者参考和实践。理解并掌握这些基本操作是深入学习二叉树和数据结构的关键步骤,有助于提升编程能力和算法思维。
本树子系统不仅提供了基本的树构建功能,还支持多种树的操作,包括不同类型的遍历、节点计数、深度计算以及节点搜索,是一个较为全面的数据结构实现。通过这样的系统,用户可以方便地理解和操作树形数据结构,适用于...
在这个“数据结构习题(二叉树子系统)”中,我们主要关注的是二叉树这一重要的数据结构。二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。 二叉树的主要操作包括插入、...
本文实例讲述了jQuery插件zTree实现删除树子节点的方法。分享给大家供大家参考,具体如下: 1、实现代码: <!DOCTYPE html> <html> <head> <title>zTree实现基本树</title> <meta ...
GoJS中的树图是一种典型的节点链接数据结构,每个节点可以有零个或多个子节点。在"Gojs树demo"中,这种结构被用于清晰地展现数据的层级关系。这种图表对于项目管理、文件系统、家族树等场景特别有用,因为它们能直观...
以下是一段伪代码示例,用于展示如何实现这一算法: ```cpp Node* findParent(Node* root, Node* destination, Node*& back) { if (root->left == NULL && root->right == NULL) { back = NULL; return; } if ...
在这个树子系统中,我们关注的是如何创建二叉树以及对它的各种操作,如先序遍历、中序遍历、后序遍历,以及计算叶子节点数、节点总数和树的深度。 **二叉树的创建**: 创建二叉树通常涉及到动态内存分配和节点的...
数据结构:二叉树子系统 在计算机科学中,二叉树是一种重要的数据结构,广泛应用于各个领域。二叉树子系统是指一个基于二叉树结构的系统,提供了对二叉树的创建、遍历、操作等功能。在本文档中,我们将详细介绍二叉...
在计算机科学中,数据结构是组织和管理数据的重要工具,而树作为一种非线性数据结构,广泛应用于各种算法和系统设计中。...通过亲手编写代码,不仅能巩固理论知识,还能提升编程技能和问题解决能力。
二叉树是数据结构中的一个重要概念,它是一种特殊的树形结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在本题目中,我们被要求实现一个二叉树子系统,该系统包括以下功能: 1. **建立二叉树**:...
这个压缩包中可能包含了各种不同风格和功能的树菜单实现,如静态树菜单、动态加载、可展开/折叠节点、拖拽排序、搜索过滤等功能。每种实现可能采用了不同的编程技巧和数据结构,如递归、DOM操作、事件处理等。例如,...
二叉树的各种遍历(前序、中序、后序、层序),以及计算树的叶子树和树的深度
在这个压缩包中,我们找到了对线性表、队列、堆栈和二叉树的遍历与查找等关键概念的代码实现。 1. **线性表**:线性表是最基础的数据结构之一,它是由n(n>=0)个相同类型元素构成的有限序列。线性表的常见实现有...
根据给定文件的信息,我们可以将该数据结构源代码系统分为几个主要部分进行解析与知识点的归纳:线性表子系统、停车场管理系统、二叉树子系统、图子系统、查找子系统以及排序子系统。 ### 一、线性表子系统 线性表...
通过分析这些代码,我们可以深入理解这两种查找方法的实现细节,包括如何初始化查找过程、如何进行元素比较以及如何处理查找结果。此外,也可以通过测试不同规模和不同数据分布的实例,来评估和比较这两种查找方法在...
数据结构中的二叉树,的相关设计报告,包含源代码,和运行结果。
打开这个VI,你可以看到如何组合上述步骤以创建一个功能完备的树形控件,包括加载复选框、处理节点选中事件以及实现全选和全取消功能。 此外,为了提高用户体验,还可以考虑以下几点优化: 1. 提供搜索功能:让...