- 浏览: 531462 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
前俩个项目都是做政府的门户网,他们的栏目、部门都要以树形展示,一开始数据比较少,直接递归绑定到TreeView上,后来数据越来越多,树越来越慢,到后面打开一次导入数据至少要等待2分钟。客户不满意了,只能对树形绑定数据进行修改,去网上查了下,发现下面的方法速度比较快
第一次只导入所有根栏目,就是数据库ParentId=0的数据。点击父栏目,如果有子栏目,再从数据库查询其子栏目、绑定。
代码如下:
树形控件
<table width="97%" border="0" cellpadding="3" cellspacing="1" bgcolor="a2c4de">
<tr>
<td height="30" colspan="4" align="center" background="images/bg7.jpg" bgcolor="#FFFFFF"
class="font12B">
栏目管理</td>
</tr>
<tr>
<td valign="top" colspan="4" align="left" bgcolor="#FFFFFF" >
<asp:TreeView ID="treeCatalog" runat="server" Width="100%" Height="100%"
OnTreeNodePopulate="TreeCatalog_TreeNodePopulate" ExpandDepth="1" ImageSet="Arrows" CollapseImageToolTip="折叠 " ExpandImageToolTip="展开 ">
</asp:TreeView>
</td>
</tr>
</table>
cs代码
绑定数据
private void LoadData()
{
try
{
DataTable table = new DataTable();
table = getChildNode(0); //得到所有所有父节点,放到DataTable中,这里默认根节点的父节为0
BindNode(table, treeCatalog.Nodes); //绑定所有的父节点
}
catch (Exception ex)
{
Response.Write("<script>window.top.navigate('Login.aspx');</script>");
}
}
得到父节点的字节点,放到DataTable中#region 得到父节点的字节点,放到DataTable中
private DataTable getChildNode(int ParentId)
{
DataTable table = new DataTable();
DataService.Service service = new Service();
DataSet ds = service.CatalogGetByParentId(ParentId).SearchResultDataSet;
if (ds!=null&&ds.Tables[0].Rows.Count>0)
{
table = ds.Tables[0];
}
else
{
table = null;
}
return table;
}
#endregion
填充节点#region 填充节点
private void BindNode(DataTable table,TreeNodeCollection node)
{
DataView dv = new DataView(table);
TreeNode NewNode;
foreach(DataRowView dr in dv)
{
NewNode = new TreeNode();
string text = "<a href='CatalogEdit.aspx?Id=" + dr["Id"].ToString() + "'>" + dr["Name"].ToString();
text +="</a> <a href='CatalogAdd.aspx?ParentId=" + dr["Id"].ToString() + "'>";
text+="<img alt='增加子栏目' src='images/jia.jpg' border='0'></a>";
NewNode.Text = text;
NewNode.Value = dr["Id"].ToString();
node.Add(NewNode);
NewNode.PopulateOnDemand = Convert.ToInt32(dr["ChildNodeCount"].ToString())>0;
}
}
#endregion
填充节点事件#region 填充节点事件
protected void TreeCatalog_TreeNodePopulate(object sender,TreeNodeEventArgs e)
{
getDataNode(Convert.ToInt32(e.Node.Value), e.Node); //点加号展开时调用.得到数据并绑定.传入点击结点 ID,和点击节点对像.
}
#endregion
private void getDataNode(int ParentId,TreeNode Node)
{
BindNode(getChildNode(ParentId), Node.ChildNodes); //向结点填充数据.
}
存储过程
存储过程
CREATE PROCEDURE usp_CatalogGetByParentId
(
@ParentId int
)
AS
BEGIN
if @ParentId is null
SELECT Id,Name,ParentId,CategoryId,IsParent,(select count(*) from Catalog where ParentId=C.Id and Status<>99 ) as ChildNodeCount
FROM Catalog C where status <>99 and ParentId is null order by [order]
else
SELECT Id,Name,ParentId,CategoryId,IsParent,(select count(*) from Catalog where ParentId=C.Id and Status<>99 ) as ChildNodeCount
FROM Catalog C where status <>99 and ParentId=@parentId order by [order]
END
发表评论
-
CMPP短信网关客户端发送程序
2010-04-06 11:12 4715最近无聊,玩了玩ubuntu ... -
C#编程中的预处理指令
2010-01-13 11:22 1401在C#中, 虽然编译器没有单独的预处理器,但在处理预处理指令时 ... -
vs 打包winform程序步骤经验总结
2010-01-06 09:47 58441、 应用程序文件夹 : 在应用程序文件夹下新建一文件夹重名为 ... -
处理资源 'http://localhost/ws/Service.asmx' 时出错(iis,.netframework安装顺序造成的错)
2009-12-30 17:10 1908刚刚学习webservices,很多东西都不懂。写了个最简单的 ... -
图解在VS2005利用NUnit进行测试
2009-12-21 12:53 1555一、介绍NUnit是一款用于在.net环境进行单元测试的工具, ... -
如何编写单元测试用例(转载自CSDN)
2009-12-17 17:01 3161一、 单元测试的概念 ... -
NUnit2.0详细使用方法
2009-12-17 17:00 10675 .测试生命周期合约 如果记得test case的定义,其中 ... -
NUnit2.0详细使用方法
2009-12-17 16:58 11631、初识NUnitNUnit是一个开源单元测试框架,它提高一套 ... -
在.NET环境中使用单元测试工具Nunit
2009-12-17 16:56 1056简介编写单元测试是一 ... -
.NET命名空间使用介绍
2009-12-17 11:29 1710在ASP.NET中,.NET Framework为我们 ... -
一种清晰而又简单通用的分页算法
2009-12-17 10:03 6089分页,是WEB开发中面对的最常见的编程,实现方法多种多样。我也 ... -
C#数据结构-双向链表
2009-12-17 09:54 1956在结点中设两个引用域,一个保存直接前驱结点的地址,叫prev, ... -
读书笔记c#高级编程 委托和事件
2009-12-17 09:49 1096在C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编 ... -
深入理解C#中的委托和事件:委托的定义
2009-12-16 16:04 1641委托和事件在 .Net Framework中的应用非常广泛,然 ... -
C#委托和事件(简单示例)
2009-12-16 15:46 38291.委派的实现过程。 首先来看一下委派,委派其实就是方法的传 ... -
关于配置文件的读取
2009-11-18 16:52 2068在1.0/1.1版本,都流行的 ... -
C# WInForm 无框窗体移动
2009-11-12 13:56 2014调用APIusing System.Runtime.Inter ... -
在C# 中如何动态地添加控件
2009-09-09 11:05 3648通常在写程序的时候 ... -
ListBox相互移动
2009-08-14 17:33 1429using System;using System.Colle ... -
TreeView-demo
2009-08-14 17:22 1317using System;using System.Co ...
相关推荐
实例109 将xml文件节点绑定到treeview控件中 实例110 修改treeview控件的节点文本 第11章 c#面向对象高级技术 实例111 利用接口实现选择不同的语言 实例112 使用接口作为方法参数进行编程 实例113 自定义抽象类计算...
实例109 将xml文件节点绑定到treeview控件中 178 实例110 修改treeview控件的节点文本 179 第11章 c#面向对象高级技术 181 实例111 利用接口实现选择不同的语言 182 实例112 使用接口作为方法参数进行编程 184 实例...
22.2.1 创建数据绑定的TreeView 控件 614 22.2.2 将DataSet对象绑定到TreeView 控件 617 22.2.3 即时创建节点 618 22.3 DataGrid控件 621 22.3.1 改变列的尺寸与重新安排列 622 22.3.2 定义列 623 22.3.3 设置列的...
22.2.1 创建数据绑定的TreeView 控件 614 22.2.2 将DataSet对象绑定到TreeView 控件 617 22.2.3 即时创建节点 618 22.3 DataGrid控件 621 22.3.1 改变列的尺寸与重新安排列 622 22.3.2 定义列 623 22.3.3 设置列的...
主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和...数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形...
利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...