TreeView在vs2005中数据库记录有5000多条,加载速度太慢,要10分钟,怎么解决?c#
代码如下:
string str = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
SqlConnection Conn = new SqlConnection(str);
SqlDataAdapter myCommand = new SqlDataAdapter("SELECT * from 部门 where 是否人员='否' or 是否离职='是' order by 部门编号", Conn);
DataSet ds = new DataSet();
myCommand.Fill(ds);
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "分区编号= " + ParentID.ToString();
foreach (DataRowView drv in dv)
{
TreeNode nod = new TreeNode();
if (pNode == null)
{
nod.Text = "(" + (drv["部门编号"].ToString()) + ")" + drv["部门名称"].ToString();
TreeView1.Nodes.Add(nod);
AddTree(drv["部门编号"].ToString(), nod);
}
else
{
nod.Text = "(" + (drv["部门编号"].ToString()) + ")" + drv["部门名称"].ToString();
pNode.ChildNodes.Add(nod);
AddTree(drv["部门编号"].ToString(), nod);
}
TreeView1.CollapseAll();
代码如下:
string str = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
SqlConnection Conn = new SqlConnection(str);
SqlDataAdapter myCommand = new SqlDataAdapter("SELECT * from 部门 where 是否人员='否' or 是否离职='是' order by 部门编号", Conn);
DataSet ds = new DataSet();
myCommand.Fill(ds);
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = "分区编号= " + ParentID.ToString();
foreach (DataRowView drv in dv)
{
TreeNode nod = new TreeNode();
if (pNode == null)
{
nod.Text = "(" + (drv["部门编号"].ToString()) + ")" + drv["部门名称"].ToString();
TreeView1.Nodes.Add(nod);
AddTree(drv["部门编号"].ToString(), nod);
}
else
{
nod.Text = "(" + (drv["部门编号"].ToString()) + ")" + drv["部门名称"].ToString();
pNode.ChildNodes.Add(nod);
AddTree(drv["部门编号"].ToString(), nod);
}
TreeView1.CollapseAll();
解决方案 »
- 验证为textbox为空在.net环境下怎么实现?
- dataset翻页奇怪的性能问题
- asp.net获取控件的问题
- web form 中我为什么引用不了 system.drwing命名空间呢!
- 求购学校选课系统和考试系统
- 各位对IIS熟悉的朋友帮我看看IIS服务停止的问题
- 新手----请教编写论坛的一个简单问题!!
- 如何取得两个月份相差的月数?
- 简单问题,为什么我在SQL数据库中建的NTEXT字段,当字符长度过长时(几千个汉字),数据库中对应的字段显示<LONG TEXT>,我在dotnet中读取
- 支付宝API
- 高分请教:ASP.NET 与 ASP的区别及学习方法?
- 再问关于.NET控件的问题
在数据库中建立视图,索引
一次取一部份?
部门编号(0)
+- 部门编号(1)
|
+- 部门编号(2) +- 部门编号(3)
| |
| +- 部门编号(4)
|
|
+- 部门编号(5)
|
...这样取出所有的5000条记录在那递归。
我的意思是能不能一次只取一个节点下一层的数据。
比如:第一次取 1, 2, 5
如果点了2,我再取3, 4
每次只取ParentID=N的数据。int intParentID = 3;
SqlConnection conn = new SqlConnection(str);
SqlCommand comm = new SqlCommand("SELECT * from 部门 where (是否人员='否' or 是否离职='是') and 分区编号=@ParentID order by 部门编号", conn);
// 不知道你的 分区编号/部门编号 是什么类型的,瞎猜是
comm.Parameters.Add("@ParentID", SqlDbType.Int).Value = intParentID;
SqlDataReader dr = comm.ExecuteReader();
while(dr.Read())
{
//...
}
~~~~ 我的Blog:http://blog.csdn.net/quou2002
+ 部门(1)
+ 部门(2)当点击 部门(0) 的时候再加载 部门(0) 的子节点:- 部门(0)
+ 部门(01)
+ 部门(02)
+ 部门(03)
+ 部门(1)
+ 部门(2)这样逐级加载。当然你必须在 TreeView.BeforeExpand 事件
中去加载该节点的子节点。
http://www.aspxboy.com/code
看左边 有源码