树状结构展示采购单Treeview

请热心的帮忙,如果有VB.NET或者C#代码就最好了,不胜感激。
图片说明

不知道你什么地方不懂,是不会查询数据库还是不会使treeview
除非给出你现有的代码,否则没法帮你写。
你有不懂可以接着问。

就你的数据结构,一共两层。
首先用select distinct(采购单) from table可以得到第一层的id
添加节点。
然后循环每个节点,用select * from 表 where 采购单=node.Text 可以得到这个节点下的第二层节点。
再循环依次添加即可。

如果需要完整程序,请先采纳本回答。并且重新提问。

protected ActionForward performAction(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
TreeView treeView = getTreeView(request,response,"ROOT#采购信息");
addPopupMenu(request);
request.setAttribute("Tree", treeView);
return (mapping.findForward("buyTree"));

}
private TreeView getTreeView(HttpServletRequest request,
        HttpServletResponse response,String identfication) throws Exception{
    TreeView view = new TreeView();
    view.identfication=identfication;
    String[] arry = identfication.split("#");
    String code = arry[0];
    String title= arry[1];
    view.text=title;
    OrgServiceInvoke.Invoke service = OrgServiceInvoke.getInstance(request);
    if("ROOT#采购信息".equals(identfication)){
        List<Model> list =  service.getBuyTree("ROOT");//你自己可以写一个获得采购信息的方法,就是一个select语句
        for (int i = 0; i < list.size(); i++){
            Model model = list.get(i);
        TreeNode node = new TreeNode(view);
        node.text = model.getName();
        node.loadlater=true;
        node.identfication=model.getNo()+"#"+model.getId()+"#"+model.getNo();//把自己需要的属性封装到里面
        node.action="javascript:onclick();";
        node.popupMenu="ROOT";//添加右键菜单,需要就写,不需要可以不写
        }
    }else{
        String[] s = identfication.split("#");
        List<Model> list  =  service.getOrgNo(s[2]);
        for (int i = 0; i < list.size(); i++){
            OrgModel model = list.get(i);
            TreeNode subNode=new TreeNode(view);
            subNode.text= model.getName();//显示的内容
            subNode.loadlater=true;
            subNode.identfication=model.getNo()+"#"+model.getId()+"#"+model.getNo();
            subNode.action="javascript:onclick();";//添加点击事件,点击可获得下拉菜单
        }
    }
    return view;
}
也可能开发平台不一样,你可能没有办法实现,可以先试试

谢谢你们,CAOZHY有思路没有实现方法, SHINE0809 的实现方法我没有看懂,恕我愚昧。。。如果还是没有更好的答案,就从你们两个选一个了。

Private Sub SampleInst_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    DateTimePicker1.Value = DateTime.Now.AddMonths(-1)
    mycn.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=blue;uid=sa;pwd=0000"
    mycommand.CommandText = " select samid,SamState,slState,(select procode from product(nolock) where Proid=Slproid) as Pcode,(select proName from product(nolock) where Proid=Slproid) as PName from Sample left join Samplelist on samid=slsamID and SamCdate between '" & DateTimePicker1.Value & "' and '" & DateTimePicker2.Value & "' and SamID like  '%" & ComboBox1.Text & "%' order by samcdate desc,SamID desc,Pcode asc"

    mycommand.Connection = mycn
    Try
        mycn.Open()
        Dim mysqlreader As Data.SqlClient.SqlDataReader = mycommand.ExecuteReader
        While mysqlreader.Read()
            TreeView1.Nodes.Add(mysqlreader.GetString(0)) '采购单号
            TreeView1.Nodes(mysqlreader.GetString(0)).Nodes.Add(3) '产品号  这样做是不对的,SQL获得数据表就是例子里面的。只是不知道怎么用树来展现。
        End While
    Catch ex As Exception

    Finally
        mycn.Close()
    End Try
End Sub

下面列出了我的代码,请CAOZHY大侠指点。谢谢。