创建层次分类结构(treeview)---2008.11.19

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);
}

 


 

你可能感兴趣的:(treeview)