用Linq生成无限级分类菜单TreeView

数据模型: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);
            }
           
        }
    }


南方都市报刊称迅雷被指盗窃用户文件

谨慎使用迅雷建议

1.使用官方正式版的迅雷软件,不要选择来历不明、经过改编的“去广告版”等迅雷
2.不要设置开机自动运行迅雷,下载时以不影响其他网络应用为前提,觉得妨碍电脑运行和其他上网应用时不妨暂停下载,关闭迅雷
3.如有必要可选择在晚上不用电脑时进行下载,以免影响电脑和网络的正常使用
4.P2P精神在于无私分享,但不希望继续长期上传的文件可以转移下载到其他分区或对文件改名.

原文请看http://www.cnbeta.com/articles/49522.htm

我在一张电脑城发布的系统光盘上发现了一个绿色简化版的迅雷,现在提供给大家下载使用。下载