当前位置:编程学习 > C#/ASP.NET >>

想请大侠们帮完善下TREEVIEW+SQL数据库的代码设计,高分求各位帮忙啊~

现在目前已经设计成这个样子了,能读出SQL数据库中的数据,并分好分类


现在想达到这个效果


1.添加“新增”,“编辑”,“删除”的功能,就是正常TREEVIEW需要填写的
2.把最终的物料代码规则在TextBox1里面显示出来。(规则已经在截图中说得比较明白了。


数据库的设计结构和一些内容




劳烦各位大侠出手了,请直接修改代码做成设计的成品,思路什么的说给我听,我也做不出来。。。。


目前的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace JMOA
{
    public partial class dmclass : Form
    {


        SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=12345;database=JMOA");
        SqlDataAdapter dtd;
        DataSet ds;
        DataView dv;//表示用于排序、筛选、搜索、编辑和导航的System.Data.DataTable+的可绑定数据的自定义视图 

        //private TreeNode Node; 


        public dmclass()
        {

            InitializeComponent();
        }

        //自定义方法 
        private void GetData(int pid, TreeNode pnode)
        {
            dv = ds.Tables[0].DefaultView;//获取可能包括筛选视图或游标位置的表的自定义视图 
            dv.RowFilter = "pid=" + pid;
            int dvC = dv.Count;
            if (pnode == null)
            {
                int i = 0;
                while (i < dvC)
                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;

                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();
                    node.Tag = int.Parse(dv[i]["id"].ToString());

                    this.treeView1.Nodes.Add(node);

                    GetData((int)node.Tag, node);
                    i++;
                }
            }
            else
            {
                int i = 0;
                while (i < dvC)
                {
                    dv = ds.Tables[0].DefaultView;
                    dv.RowFilter = "pid=" + pid;

                    TreeNode node = new TreeNode();
                    node.Text = dv[i]["name"].ToString();
                    node.Tag = int.Parse(dv[i]["id"].ToString());

                    pnode.Nodes.Add(node);

                    GetData(int.Parse(dv[i]["id"].ToString()), node);
                    i++;
                }
            }
        } 




        //注意事项 
        //1.RowFilter查询,如果是字符串许加单引号
        //2. node.Tag = dv[i]["id"].ToString();
        /// <summary>
        /// 绑定TreeView
        /// </summary>
        /// <param name="pid">父节点ID</param>
        /// <param name="pnode">当前父节点</param>
       

        private void dmclass_FormClosing(object sender, FormClosingEventArgs e)
        {
            fmain.f1 = null;
        }

        private void dmclass_Load(object sender, EventArgs e)
        {
            dtd = new SqlDataAdapter("select * from [class] order by id", conn);
            ds = new DataSet();
            dtd.Fill(ds, "class");
            GetData(0, null); 
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=12345;database=JMOA");
            conn.Open();
            string sqls = "select name as 物料名称,classdm as 物料代码 from class where name='" + treeView1.SelectedNode.Text + "'";

            SqlDataAdapter adp = new SqlDataAdapter(sqls, conn);

            DataSet dt = new DataSet();



            adp.Fill(dt, "class");
            conn.Close();

            dataGridView1.DataSource = dt.Tables[0];

        }

    }  
}


--------------------编程问答-------------------- 好厉害的代码
--------------------编程问答-------------------- 如果连这点能力都没有,真的是件挺悲哀的事情

添加和编辑其实可以做一个弹出窗体,另作处理,只需把当前选中节点和需要的操作 传递即可

你最终想要的物料代码,也只是根据当前节点,往上做一个简单的递归 --------------------编程问答-------------------- Return_false 大侠。。帮我搞完吧。。指望你了。。。我不是专业开发的。。单是被逼上架了。 --------------------编程问答-------------------- 人呢? --------------------编程问答-------------------- 其实也就是点击三个按键click每个按键对应不同的功能,删除就SQL里的delete语句,然后再
sqldelete ="delete 表名 where name='" + treeView1.SelectedNode.Text + "'";
SqlDataAdapter adp = new SqlDataAdapter(sqls, conn);
 
            DataSet dt = new DataSet();
 
 
 
            adp.Fill(dt, "class");
            conn.Close();
 
            dataGridView1.DataSource = dt.Tables[0];
你这句,其他两个都一样的很简单的!就是SQL语句有点不同! --------------------编程问答-------------------- 求帮助啊,。。。~~~ --------------------编程问答-------------------- 没明白 你要实现什么  --------------------编程问答--------------------
引用 5 楼 u011130289 的回复:
其实也就是点击三个按键click每个按键对应不同的功能,删除就SQL里的delete语句,然后再
sqldelete ="delete 表名 where name='" + treeView1.SelectedNode.Text + "'";
SqlDataAdapter adp = new SqlDataAdapter(sqls, conn);
 
            DataSet dt = new DataSet();
 
 
 
            adp.Fill(dt, "class");
            conn.Close();
 
            dataGridView1.DataSource = dt.Tables[0];
你这句,其他两个都一样的很简单的!就是SQL语句有点不同!
这个已经是差不多完成的了,难道你连复制自己改下都懒得动手了? --------------------编程问答-------------------- 我也不是专业开发人员,如果我懂的话我早就弄了,还至于在这里求吗?就写4句代码就说已经快完工了。。。我都看出来不可能啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,