数据库DB  表 a :
 
    深度    父节点    节点名   
    1      Start   A
    1      Start   B
    2      A       01
    2      A       02
    2      B       03
    3      01      a1
    3      01      a2
    3      02      a3
    3      03      b1要求,查询结果显示如下:Start 
 |- A
    |- 01
        |- a1
        |- a2
    |- 02  
        |- a3
 |- B
    |- 03
        |-b1
   
语言:C#  昨晚上通宵了,脑子发木,不转轴了,各位兄弟帮忙指点啊,谢了。

解决方案 »

  1.   

    建议用datatable一次性把数据全取出来,通过遍历datatable(操作内存)来操作 
    发一个我自己写的给你参考一下 Model using System;
    namespace WZMM.Model
    {
        /// <summary>
        /// 实体类ClassModel 。(属性说明自动提取数据库字段的描述信息)
        /// </summary>
        public class ClassModel
        {
            public ClassModel()
            { }
            #region Model
            private int _id;
            private int _classid;
            private string _name;
            private bool _isdelete;
            private bool _state;
        
                 public int id
            {
                set { _id = value; }
                get { return _id; }
            }
      
            public int classid
            {
                set { _classid = value; }
                get { return _classid; }
            }        public string name
            {
                set { _name = value; }
                get { return _name; }
            }        public bool isdelete
            {
                set { _isdelete = value; }
                get { return _isdelete; }
            }        public bool state
            {
                set {
                    _state = value;
                    
                    }
                get { return _state; }
            }
            #endregion Model
        }
    }        public static List<ClassModel> Select()
            {
                DataTable dt = GetTable();
                List<ClassModel> list = new List<ClassModel>();
                ClassModel model = new ClassModel();
                model.id = 0;
                model.name = "===请选择类别===";
                list.Add(model);
                OrderSelect(dt, list, 0, "|-");
                dt.Clear();
                return list;
            }        static DataTable GetTable()
            {
                DataTable dt = new DataTable();
                DataSet ds = new DataSet();
                Database.RunProc("CLASS_Select", out ds);
                dt = ds.Tables[0];
                return dt;
            }        static void OrderSelect(DataTable dt, List<ClassModel> list, int classid, string strTop)
            {
                DataRow[] rows = dt.Select("classid=" + classid);
                for (int i = 0; i < rows.Length; i++)
                {
                    ClassModel model = new ClassModel();
                    model.id = int.Parse(rows[i]["id"].ToString());
                    model.name = strTop + rows[i]["name"].ToString();
                    list.Add(model);
                    string str = "  " + strTop;
                    int id = int.Parse(rows[i]["id"].ToString());
                    OrderSelect(dt, list, id, str);
                }
            }
    表: 
    CREATE TABLE [dbo].[classes] ( 
    [id] [int] IDENTITY (1, 1) NOT NULL 0, 
    [classid] [int] NOT NULL 0, 
    [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL '', 
    [isdelete] [bit] NOT NULL 0, 
    [state] [bit] NOT NULL 1 
    ) ON [PRIMARY] 
    GO 
      

  2.   


    不是xml。能输出到页面就行,怎么显示是后事。
    会就帮帮忙呗..正在研究2楼的……
      

  3.   

    用Treeview实现
    代码如下private void LoadNodes(TreeNode parentNodes, CMenuItem root)
        {
            //CMenuItemCollection 节点实体集合
            CMenuItemCollection cmc = root.SubMenuItems;//以root节点为父节点的节点集合
            
            foreach (CMenuItem menu in cmc)
            {
                    TreeNode tn = new TreeNode();
                    tn.Value = menu.ID.ToString();
                    tn.PopulateOnDemand = true;
                    parentNodes.ChildNodes.Add(tn);
             }
        }    protected void tvMenu_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            CMenuItem currentItem = new CMenuItem(long.Parse(e.Node.Value));
            LoadNodes(e.Node, currentItem);
        }
    前台页面
    asp:TreeView ID="tvMenu" runat="server" CollapseImageToolTip="关闭 {0}" EnableClientScript="False"
        ImageSet="XPFileExplorer" OnTreeNodePopulate="tvMenu_TreeNodePopulate" PopulateNodesFromClient="False"
        ShowLines="True">
        <Nodes>
        <asp:TreeNode Text="statr" Value="1" PopulateOnDemand="True"></asp:TreeNode>
        </Nodes>
    </asp:TreeView>
      

  4.   

    问这种问题的好多啊!
    使用treeView 用递归生成.
    干脆写一个存在那里,让大家分享.
    http://blog.csdn.net/lonelygames/archive/2008/07/18/2671083.aspx
      

  5.   

    henjian dan ziji xiang