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);
全部查询出来
生成树
将编号作为Tag写在treeNode上
所属门店作为treeNode的父节点的文本
仓库名称作为treeNode的文本
新增的时候就DataTable.NewRow()
Tree上显示
删除已有项就DataRow.Delete()
删除新增项根据门店和仓库名称来确定删除的DataRow
更新只要根据Tag的编号来修改对应的DataRow
最后将DataTable直接提交到数据库
DataAdapter.Update()
写代码是一件很有趣的事
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();
感谢大家啦。只要写出来了,还可以再加分的
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();
}
{
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);
{
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;
}
{
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;
}
递归