三个按钮分别是《新增》《修改》《删除》,单击后弹出窗体,填好数据后,treeview中就实时的改变数据。我使用的数据库是SQL20005,首先是绑定数据库,我知道用递归,可是我看了好多网上的资料,最终也没有写出来,希望大家帮忙写出代码。
数据库字段是《编号》《所属门店》《仓库名称》。希望能给具体的代码。再次感激不尽

解决方案 »

  1.   

    把节点的修改缓存起来,最后一起update到库里。。代码写不出来。。我不玩数据库。。
      

  2.   

    可以用DataTable
    全部查询出来
    生成树
    将编号作为Tag写在treeNode上
    所属门店作为treeNode的父节点的文本
    仓库名称作为treeNode的文本
    新增的时候就DataTable.NewRow()
    Tree上显示
    删除已有项就DataRow.Delete()
    删除新增项根据门店和仓库名称来确定删除的DataRow
    更新只要根据Tag的编号来修改对应的DataRow
    最后将DataTable直接提交到数据库
    DataAdapter.Update()
      

  3.   

    找了段以前的代码给你参考下、用的是dataGridView1绑定数据
    写代码是一件很有趣的事
         using System.Data.SqlClient;//SQl的程序集
           //connectionstring是连接数据库的字符串
    SqlConnection coon = new SqlConnection(connectionstring);
                coon.Open();
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter();
                SqlCommand cmd = new SqlCommand("select * from 酒店人员", coon);
                da.SelectCommand = cmd;
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                coon.Close();
      

  4.   

    大家帮帮忙了,怎么实现treeview绑定数据库的啊,用递归还是循环啊,我觉得我就一点没有明白了,就是写不出代码了啊,可以给我远程帮助的有木有啊 1913316214
      

  5.   

    我要具体代码啊,这个谁有空就给看看吧,用的是sql2005和vs2005
    感谢大家啦。只要写出来了,还可以再加分的
      

  6.   

    treeView1.ShowLines = true;
                treeView1.ImageList = imageList1;//server=.;integrated security=sspi;database=db_02
                SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;database=db_02");
                con.Open();
                SqlCommand com = new SqlCommand("select * from tb_07", con);
                SqlDataReader dr = com.ExecuteReader();
                TreeNode newNode1 = treeView1.Nodes.Add("A","商品信息",1,2);//一级节点
                while (dr.Read())
                {
                    TreeNode newNode12 = new TreeNode("商品编号" + dr[1].ToString(),3,4);// 二级节点
                    // 3表示没有单击节点时显示的图标索引值,
                    newNode12.Nodes.Add("A","商品名称:" + dr[0].ToString(),5,6);
                    newNode12.Nodes.Add("A","商品数量:" + dr[3].ToString(),7,8);
                    newNode12.Nodes.Add("A", "商品价格:" + dr[2].ToString(),9,10);
                    newNode1.Nodes.Add(newNode12);
               
                }
                dr.Close();
                con.Close();
                treeView1.ExpandAll();
            }
      

  7.   

     private void bindTreeView1()
            {
                string sql = "select * from dm_category";
                DataTable dt = db.ExecuteDataTable(sql, CommandType.Text, null);
                DataRow[] dr = dt.Select("parent_id is null");
                for (int i = 0; i < dr.Length; i++)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = dr[i]["category_name"].ToString();
                    tn.Tag = dr[i]["id"].ToString();
                        FillTree(tn, dt);
                    treeView1.Nodes.Add(tn);
                }
            }        private void FillTree(TreeNode node, DataTable dt)
            {
                DataRow[] drr = dt.Select("parent_id='" + node.Tag.ToString() + "'");
                if (drr.Length > 0)
                {
                    for (int i = 0; i < drr.Length; i++)
                    {
                        TreeNode tnn = new TreeNode();
                        tnn.Text = drr[i]["category_name"].ToString();
                        tnn.Tag = drr[i]["id"].ToString();
                        if (drr[i]["parent_id"].ToString() == node.Tag.ToString())
                        {
                            FillTree(tnn, dt);
                        }
                        node.Nodes.Add(tnn);
                    }
                }
            } private void 删除节点ToolStripMenuItem_Click(object sender, EventArgs e)
      {
        
      treeView1.Nodes.Remove(treeView1.SelectedNode);
      N_conn.Open();
      string str = "delete from Ware where 名称='"+treeView1.SelectedNode.Text+"' ";
      SqlCommand cmd = new SqlCommand(str,N_conn);
      cmd.ExecuteNonQuery();
      N_conn.Close();  }
    treeview1.Nodes.Add(node);
      

  8.   

     private TreeNode FindNode( TreeNode tnParent, string strValue )
        {
            if( tnParent == null ) return null;
            if( tnParent.Text == strValue ) return tnParent;
     
            TreeNode tnRet = null;
            foreach( TreeNode tn in tnParent.Nodes )
            {
                tnRet = FindNode( tn, strValue );
                if( tnRet != null ) break;
            }
            return tnRet;
        }  TreeNode tnRet = null; 
            foreach( TreeNode tn in yourTreeView.Nodes ) 
            { 
                tnRet = FindNode( tn, yourValue ); 
                if( tnRet != null ) break; 
            } 
      

  9.   

     private TreeNode FindNode( TreeNode tnParent, string strValue )
        {
            if( tnParent == null ) return null;
            if( tnParent.Text == strValue ) return tnParent;
     
            TreeNode tnRet = null;
            foreach( TreeNode tn in tnParent.Nodes )
            {
                tnRet = FindNode( tn, strValue );
                if( tnRet != null ) break;
            }
            return tnRet;
        }  TreeNode tnRet = null; 
            foreach( TreeNode tn in yourTreeView.Nodes ) 
            { 
                tnRet = FindNode( tn, yourValue ); 
                if( tnRet != null ) break; 
            } 
    递归