- 浏览: 543692 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 4793最近无聊,玩了玩ubuntu ... -
C#编程中的预处理指令
2010-01-13 11:22 1446在C#中, 虽然编译器没有单独的预处理器,但在处理预处理指令时 ... -
vs 打包winform程序步骤经验总结
2010-01-06 09:47 59311、 应用程序文件夹 : 在应用程序文件夹下新建一文件夹重名为 ... -
处理资源 'http://localhost/ws/Service.asmx' 时出错(iis,.netframework安装顺序造成的错)
2009-12-30 17:10 1961刚刚学习webservices,很多东西都不懂。写了个最简单的 ... -
图解在VS2005利用NUnit进行测试
2009-12-21 12:53 1601一、介绍NUnit是一款用于在.net环境进行单元测试的工具, ... -
如何编写单元测试用例(转载自CSDN)
2009-12-17 17:01 3214一、 单元测试的概念 ... -
NUnit2.0详细使用方法
2009-12-17 17:00 11045 .测试生命周期合约 如果记得test case的定义,其中 ... -
NUnit2.0详细使用方法
2009-12-17 16:58 12301、初识NUnitNUnit是一个开源单元测试框架,它提高一套 ... -
在.NET环境中使用单元测试工具Nunit
2009-12-17 16:56 1092简介编写单元测试是一 ... -
.NET命名空间使用介绍
2009-12-17 11:29 1765在ASP.NET中,.NET Framework为我们 ... -
一种清晰而又简单通用的分页算法
2009-12-17 10:03 6144分页,是WEB开发中面对的最常见的编程,实现方法多种多样。我也 ... -
C#数据结构-双向链表
2009-12-17 09:54 1992在结点中设两个引用域,一个保存直接前驱结点的地址,叫prev, ... -
读书笔记c#高级编程 委托和事件
2009-12-17 09:49 1129在C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编 ... -
深入理解C#中的委托和事件:委托的定义
2009-12-16 16:04 1680委托和事件在 .Net Framework中的应用非常广泛,然 ... -
C#委托和事件(简单示例)
2009-12-16 15:46 38691.委派的实现过程。 首先来看一下委派,委派其实就是方法的传 ... -
关于配置文件的读取
2009-11-18 16:52 2190在1.0/1.1版本,都流行的 ... -
C# WInForm 无框窗体移动
2009-11-12 13:56 2055调用APIusing System.Runtime.Inter ... -
在C# 中如何动态地添加控件
2009-09-09 11:05 3694通常在写程序的时候 ... -
ListBox相互移动
2009-08-14 17:33 1465using System;using System.Colle ... -
TreeView-demo
2009-08-14 17:22 1354using System;using System.Co ...
相关推荐
5. **实时更新**:当数据源发生变化时,如添加、删除或修改记录,通过重新绑定数据(如调用`DataBind()`方法)或使用数据绑定的自动更新机制,使TreeView立即反映出这些变化。 6. **扩展功能**:还可以利用TreeView...
3. **绑定数据**:将数据源与`TreeNode`关联起来。这可以通过使用`DataSource`属性和`DataMember`属性完成,或者通过编程方式逐个添加`TreeNode`。 4. **更新视图**:一旦数据绑定完成,`TreeView`会自动根据数据源...
数据绑定是.NET中的一项核心功能,它使得UI组件(如`TreeView`)可以直接与数据源关联,从而自动更新视图以反映数据源的变化。数据源可以是任何实现了`IEnumerable`或`IListSource`接口的对象,如数组、列表或数据库...
1. **使用`BindingSource`**:`BindingSource`是一个强大的组件,它提供了一种简单的方式来绑定数据源。首先,创建一个`BindingSource`实例,设置其`DataSource`为你的数据集,然后将`TreeView`的`DataSource`设置为...
总之,TreeView数据绑定是.NET开发中的重要技能,它使数据可视化变得简单且高效。通过掌握这一技术,你可以创建更动态、响应式的用户界面,提高应用程序的交互性和用户体验。在实际项目中,它广泛应用于文件系统浏览...
`TreeView` 的数据绑定是 WPF 数据绑定机制的一个重要应用,它允许开发者以声明式的方式将视图(如 `TreeView`)与数据源(如数据库)关联起来,从而简化UI与数据之间的同步。 1. **数据绑定基础** 数据绑定是 WPF...
本文将深入探讨如何将数据库中的数据绑定到TREEVIEW控件,这是一个广泛应用于展示具有层次结构数据的控件,如组织结构、文件系统等。下面,我们将详细分析代码示例,解析其工作原理,并提供一些最佳实践。 ### ...
### TreeView 控件绑定数据库知识点解析 #### 一、TreeView 控件简介 在软件开发过程中,尤其是涉及到数据展示时,`TreeView` 控件被广泛应用于显示具有层级关系的数据,如组织架构、文件目录等。它能够直观地表示...
在标题提到的"TreeView的动态绑定(高效型)_Ajax"中,关键在于如何设计一个高效的动态加载策略。这通常包括以下步骤: 1. **客户端事件处理**:在TreeView的节点被展开时,触发一个Ajax请求。这个事件可以是...
本文将探讨如何使用TreeView控件递归地绑定数据库中的数据,以实现高效、直观的数据展示。TreeView控件是一个常见的用户界面元素,它以树形结构显示数据,非常适合于层级关系的展示,例如组织结构、文件系统或目录...
设置TreeView控件的DataSource属性为你在业务逻辑层创建的TreeNode集合,然后调用DataBind()方法来实际绑定数据。 6. **事件处理**:为了响应用户的交互,如节点展开或点击,可以添加事件处理程序。例如,当用户...
通过数据绑定,我们可以将数据模型直接映射到TreeView上,简化界面和逻辑的耦合。 **2. 自动数据组装** 自动数据组装是指在程序运行时,根据数据模型动态地生成TreeView的节点。这通常通过数据绑定和数据模板实现。...
然后,可以通过`TreeView`的`Nodes`属性或者`DataSource`属性进行数据绑定。 ```csharp // 创建树节点数据模型 public class TreeNodeModel { public string Text { get; set; } public List<TreeNodeModel> ...
理解数据绑定的基础,创建合适的数据模型,定义数据模板,配置数据源,以及掌握如何响应用户交互,是构建高效`TreeView`的关键。通过实践和不断学习,开发者可以创建出功能丰富的用户界面,满足复杂的数据展示需求。
自定义这个控件的关键在于正确地绑定数据源,实现高效的虚拟化以处理百万级别的数据量,同时保持良好的性能。 首先,我们需要实现虚拟化。在`TreeView`中,虚拟化是一种节省内存和CPU资源的技术,它只在可视区域...
文件名没有提供更多的上下文信息,但通常这样的资源会帮助开发者理解如何在实际应用中绑定数据到树形控件,从而更高效地展示和操作层次数据。学习和掌握这一技能对于开发涉及层级结构展示的项目至关重要。
2. **数据绑定**:使用`DataSource`属性将数据绑定到`TreeView`,同时设置`DataMember`属性来指定数据中代表节点的字段。例如,如果你的数据源是对象列表,可以这样设置: ```csharp treeView1.DataSource = ...
本篇文章将深入探讨如何在C#中绑定数据到`TreeView`控件,以及相关的实现细节。 1. 数据源准备 在绑定数据到`TreeView`之前,你需要有一个数据源。这个数据源可以是数组、列表、字典或者任何实现了`IEnumerable`...
考虑到更高效的数据管理和更新,可以使用数据绑定将Treeview与数据源(如DataTable或BindingSource)连接起来。这样,当数据库中的数据改变时,Treeview会自动更新,反之亦然。 7. **优化性能** 如果数据库记录...