想请大侠们帮完善下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语句有点不同! --------------------编程问答-------------------- 求帮助啊,。。。~~~ --------------------编程问答-------------------- 没明白 你要实现什么 --------------------编程问答-------------------- 这个已经是差不多完成的了,难道你连复制自己改下都懒得动手了? --------------------编程问答-------------------- 我也不是专业开发人员,如果我懂的话我早就弄了,还至于在这里求吗?就写4句代码就说已经快完工了。。。我都看出来不可能啊
补充:.NET技术 , C#