数据模型:NewsCategory

Cateid

uniqueidentifier

ID

CateName

Nvarchar(256)

分类名

PreCate

uniqueidentifier

父类

IsLeaf

bit

是否为叶子

首先创建Linq to sql classes文件DB.dbml,把该表拖进去

下面是代码:

在页面上放:

<asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
    </asp:TreeView>

.cs中为:

    DBDataContext ctx = new DBDataContext();

    protected void Page_Load(object sender, EventArgs e)
    {             
        IQueryable<NewsCategory> cates = from cate in ctx.NewsCategories
                                         where cate.PreCate.ToString().Equals("root")
                                         select cate;
        foreach (var cate in cates)
        {
            TreeNode node = new TreeNode();
            node.Text = cate.CateName;
            node.Value = cate.CateId.ToString();
            TreeView1.Nodes.Add(node);
            if (cate.IsLeaf==false)
            {
                node.Expanded = true;
                AddReplies(node);
            }
        }
    }

    private void AddReplies(TreeNode node)
    {
        IQueryable<NewsCategory> cs = from c in ctx.NewsCategories
                                      where c.PreCate.ToString().Equals(node.Value)
                                      select c;
        foreach (var c in cs)
        {
            TreeNode replyNode = new TreeNode();
            replyNode.Text = c.CateName;
            replyNode.Value = c.CateId.ToString();
            node.ChildNodes.Add(replyNode);
            if (c.IsLeaf==false)
            {
                replyNode.Expanded = true;
                AddReplies(replyNode);
            }
           
        }
    }