如题,我一个表tb,
字段
     date1,     serialno
    2010-11-07  a001
    2010-11-07  a002
    2010-11-08  a003树形大概是这样的:     2010-11-07
              a001
              a002
     2010-11-08
              a003我用的是VS2010

解决方案 »

  1.   

    lst//就是你的源数据
    list<string>dlst=new list<string>();
    dlst=lst.select(n=>n.date1.tostring.trim()).distinct().tolist();
    foreach(string a in dlst)
    {
    treenode anode=new treenode();
    anode.text=a;
    foeach(DT d in lst)
    {
     if(d.date1.tostring().trim()==a)
    {
     treenode snode=new treenode();
     snode.text=d.serialno;
     anode.subnode.add(snode);
    }
    }
    tree1.node.add(anode);
    }
    大概就这样了.
      

  2.   

    把treeView1的根节点的子节点设为
    select distinct date1 from tb
    语句返回的集合,在treeView1的根节点的子节点的select事件中获得该节点的值
    然后将该节点的子节点设为
    select serialno from tb where datel='该节点的值'
    这条语句的集合
      

  3.   

     private void Frmlosscomfrim_Load(object sender, EventArgs e)
            {            DataSet ds = sqlConnDb.query("select distinct date1 from tb ");                    {
               
                DataTable tempDataTable = ds.Tables [0].Copy();    // 将组织结构表另存一份为tempDataTable
                DataView viewSetOrgInfo = new DataView(tempDataTable);
                
                
                // 将数据集中的所有记录逐个根据他们之间的关节系添加到权型表中去.
                if (viewSetOrgInfo.Count > 0)
                {
                    foreach (DataRowView myRow in viewSetOrgInfo)
                    {
                        string strEnterpriseName = myRow["date1"].ToString().Trim();
                        this.treeView1.Nodes.Add(new TreeNode(strEnterpriseName));    // 此处是添加第一个节点
                        PopulateTreeView(strEnterpriseName, treeView1.Nodes[0], myRow);    // 调用自定义方法,该方法会递归添加所有子节点
                        treeView1.SelectedNode = treeView1.Nodes[0];    // 选中第一个节点
                    }
                }
            }        /// <summary>
            /// 根据输入的节点的信息,递归调用,最终添加所有的节点
            /// </summary>
            /// <param >指定节点的本</param>
            /// <param >指定它所属的父节点.</param>
            /// <param >父节点所在的DataRowView</param>
            private void PopulateTreeView(string parentPart, TreeNode parentNode, DataRowView parentRow)
            {
                 DataSet ds = sqlConnDb.query("select  serialno  from tb where date1='"+parentRow["date1"].ToString().Trim() + "'" );
                string strEnterpriseName = "";
                DataTable tempDataTable = tblSetOrgInfo.Copy();
                DataView viewSetOrgInfo = new DataView(tempDataTable);
                // 筛选获得当前传递过来的节点的子项,并将其添加到树形图中
                // (通过判断方法凡是paretnIndex等于传递过来的节点的absIndex的,就是该节的子项
               /// viewSetOrgInfo.RowFilter = "ParentIndex = '" + parentRow["AbsIndex"].ToString().Trim() + "'";
                // 递归的添加每一个节点的所有子节点
                foreach (DataRowView myRow in viewSetOrgInfo)
                {
                    strEnterpriseName = myRow["serialno"].ToString().Trim();
                    TreeNode myNode = new TreeNode(strEnterpriseName);
                    parentNode.Nodes.Add(myNode);
                    // 函数递归调用,将所有节点按顺序添加完毕
                                }           
            }我这个做了一个,可是得不到我想要的
      

  4.   

    树形成了这样
    2010-11-07
            a001
            a002
            a003
    2010-11-08