CREATE PROCEDURE [pr_categorys]
AS
select
A.ID,A.name,A.parentID,A.showorder,A.remark,
isnull((select name from category as B where A.parentID=B.ID),null)as parentname,
ISNULL((select count(*) from category as C WHERE A.ID=C.parentID),0)AS subcount,
isnull((select count(*)from category as D where A.parentID=D.parentID),0)as siblingcount
from category as A order by parentID,showorder
GO///创建存储过程 pr_categorys
创建数据表
PARENTID继承上个序号 依次排列
在类下
创建两个方法 init() createnode()
public void init(TreeView tv)
{
yingda da = new yingda();
DataSet ds = da.getcategorys();
if (ds == null) return;
if (ds.Tables.Count <= 0) return;
DataTable dt = ds.Tables[0];
tv.Nodes.Clear();
DataRow[] rowlist = dt.Select("parentID='0'");
if (rowlist.Length < 1) return;
TreeNode root = new TreeNode();//创建节点
root.Text = rowlist[0]["name"].ToString();节点属性
root.Value = rowlist[0]["ID"].ToString();节点属性
root.Target = "parentID";节点属性
root.NavigateUrl = "3.aspx?ID=" + root.Value;节点属性
root.Expanded = true;节点属性||==可以展开
tv.Nodes.Add(root);
createnode(root, dt, "3", "3.aspx?ID=");
}
public void createnode(TreeNode parentnode, DataTable dt, string target, string url)
{
DataRow[] rowlist = dt.Select("parentID='" + parentnode.Value + "'", "showorder");
foreach (DataRow row in rowlist)
{ TreeNode node = new TreeNode();
node .Text=row["name"].ToString ();
node .Value =row ["ID"].ToString();
node.Target = target;
node.NavigateUrl = url + node.Value;
node.Expanded = true;
parentnode.ChildNodes.Add(node); createnode(node ,dt,target,url);
if (node.ChildNodes.Count > 0) { node.SelectAction = TreeNodeSelectAction.None; }
}
}
最后应用页面 添加 TREEVIEW控件 然后调用 以上两个方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
private void bind()
{ yingda yd = new yingda();
yd.init(TreeView1);
}