数据库:
create table Tree
(
TID int identity primary key,
TreeName varchar(10) not null,
Href varchar(50),
Pid int
)
insert into Tree
values('工作报表','',2)
insert into Tree
values('报表管理','',0)
insert into Tree
values('系统管理','',0)
insert into Tree
values('店铺管理','',3)
delete from Tree where TID=1
select * from Tree
truncate table Tree
create procedure sp_Tree_select
as
select * from Tree
go
exec sp_Tree_select
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using DBUtility;
using BLL;
namespace shuangs
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindTree();
}
}
private void BindTree()
{
Tree myTree = new Tree();
List<TreeInfo> list = myTree.Tree_Select();
if (list == null || list.Count == 0)
{
return;
}
TreeNode node = null;
foreach (TreeInfo info in list)
{
node = new TreeNode(info.TreeName, info.TID.ToString());
if (info.Pid == 0)
{
Tree.Nodes.Add(node);//treeview的Id:tree
}
else
{
TreeNode parentNode = getparentnode(info.Pid.ToString());
if (parentNode != null)
{
node.NavigateUrl = "../" + info.Href;
node.Target = "main";
parentNode.ChildNodes.Add(node);
}
}
}
}
private TreeNode getparentnode(string pid)
{
TreeNode parentnode = null;
foreach (TreeNode node in Tree.Nodes)
{
if (node.Value == pid)
{
parentnode = node;
break;
}
else if (node.ChildNodes.Count > 0)
{
parentnode = getparentnode(node, pid);
if (parentnode != null)
{
break;
}
}
}
return parentnode;
}
private TreeNode getparentnode(TreeNode node, string pid)
{
TreeNode parentnode = null;
foreach (TreeNode cd in node.ChildNodes)
{
if (cd.Value == pid)
{
parentnode = cd;
break;
}
else if (cd.ChildNodes.Count > 0)
{
parentnode = getparentnode(cd, pid);
if (parentnode != null)
{
break;
}
}
}
return parentnode;
}
}
}
缺点:只能套用已有的格式,不能改变成想要的格式。
二、DAL层
public static DataTable pager(CommandType commandType,string commandText, params SqlParameter[] sps)
{
SqlConnection sqlConn = new SqlConnection(ConnStr);
SqlCommand sqlCmd = sqlConn.CreateCommand();
PrepareCommand(sqlCmd, commandType, commandText, sps);
SqlDataAdapter adapter = new SqlDataAdapter(sqlCmd);
DataTable table = new DataTable();
try
{
adapter.Fill(table);
}
catch
{
}
finally
{
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
}
}
return table;
}
三、BLL层
public static DataTable pager(int pageSize, int pageIndex,
string columns, string keyName,string name, string tableName, string keyNames, string tableNames,
out int recordCount)
{
SqlParameter[] sps =
{
new SqlParameter("@PageSize",pageSize),
new SqlParameter("@PageIndex",pageIndex),
new SqlParameter("@Columns",columns),
new SqlParameter("@KeyName",keyName),
new SqlParameter("@name",name),
new SqlParameter("@TableName",tableName),
new SqlParameter("@KeyNames",keyNames),
new SqlParameter("@TableNames",tableNames),
new SqlParameter("@RecordCount",SqlDbType.Int)
};
sps[8].Direction = ParameterDirection.Output;
DataTable table = SqlHelper.pager(CommandType.StoredProcedure, "sp_datapagers", sps);
recordCount = Convert.ToInt32(sps[8].Value);
return table;
}