C# winform 中 treeview 动态添加节点问题

现有数据库中数据如下:序号区域位置机器编号1苏州201010102苏州201020203南京201030304无锡20104040……想要实现treeview结构如下:全... 现有数据库中数据如下:
序号 区域位置 机器编号
1 苏州 20101010
2 苏州 20102020
3 南京 20103030
4 无锡 20104040
……
想要实现treeview结构如下:
全部记录
时间
苏州
时间
20101010
时间
20102020
时间
南京
时间
20103030
时间
无锡
时间
20104040
时间
……
展开
 我来答
Q20100309Q
2012-07-02 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:108万
展开全部

先给出我做的效果图,应该符合你的要求:

   

  代码:

        private DataSet GetData(string sql)

        {   //不知道你用的什么数据库,我由于最近在用Access,

            //所以函数是连接的Access,得到    DataSet

           //如果用SQL Server或者其他是类似的,传入sql语句,得到DataSet

           //DBAccess是自定义类,没有贴上代码,如果要具体的数据库连接代码,说一下

            string accessDb = @"E:\dat.mdb";

            DBAccess access = new DBAccess(accessDb, sql);

            return access.GetDataSet();

        }

    private void button1_Click(object sender, EventArgs e)

        {

            if (!treeView1.Nodes.ContainsKey("区域名"))//先判断是否已经存在这个节点

            {

                TreeNode root = new TreeNode("区域名");//创建节点

        root.Name = "区域名";//为节点取个名字,这儿创建的是根节点

                treeView1.Nodes.Add(root);//将节点添加到treeView1上

                DataSet ds = GetData("select distinct 区域位置 from T_Machines");//获取数据集dataset

                foreach (DataRow row in ds.Tables[0].Rows)

                {

                    TreeNode node = new TreeNode(row["区域位置"].ToString());

                    node.Name = row["区域位置"].ToString();

                    if (!root.Nodes.ContainsKey(node.Name))

                    {

                        root.Nodes.Add(node);

                    }

                }

            }

        }

        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)

        {

            TreeNode clickedNode = e.Node;

            string name = clickedNode.Text;

            DataSet ds = GetData("select 机器编号 from T_Machines where 区域位置='" + name + "'");           

            foreach (DataRow row in ds.Tables[0].Rows)

            {

                TreeNode node = new TreeNode(row["机器编号"].ToString());

                node.Name = row["机器编号"].ToString();

                if (!clickedNode.Nodes.ContainsKey(node.Name))

                {

                    clickedNode.Nodes.Add(node);

                }

            }

        }

一水净身
2012-07-02
知道答主
回答量:21
采纳率:0%
帮助的人:13.4万
展开全部
private void Form1_Load(object sender, EventArgs e)
{

DataColumn dc = new DataColumn("编号");
DataColumn dc2 = new DataColumn("位置");
DataColumn dc3 = new DataColumn("机型");
dt.Columns.Add(dc);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr;
dr = dt.NewRow();
dr["编号"] = 1;
dr["位置"] = "江苏";
dr["机型"] = "201010";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["编号"] = 2;
dr["位置"] = "南京";
dr["机型"] = "201010";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["编号"] = 3;
dr["位置"] = "无锡";
dr["机型"] = "201010";
dt.Rows.Add(dr);

--------------------下面是从DataTable中遍历的出来的
foreach (DataRow item in dt.Rows)
{
string where = item["位置"].ToString();
string time = item["机型"].ToString();
TreeNode t = new TreeNode(where);
TreeNode tt = new TreeNode(time);
t.Nodes.Add(tt); // 这些是只有一层子节点的,可以自己再
treeView1.Nodes.Add(t);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式