求助,关于treeview添加节点数据库的数据
我的SQL数据库有两张表,一张是父节点(Fujiedian),一张是子节点(Zijiedian),父节点的表有两列:ID,FU.子节点有3列:ID,ZI,Zid.其中子节点的Zid外键绑定父节点的ID,(其实就可以理解成QQ好友那样,父节点就是QQ好友的分组,子节点就是QQ好友),
//这段代码是读取信息的,让表里的数据按组添加到树状列表里面(希望有高手能帮忙改进一下,,这个有点2...)
public void Form2_Load(object sender, EventArgs e)
{
this.treeView1.Nodes.Clear();
SqlConnection con = new SqlConnection(@"..........;");
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select * from Fujiedian";
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
treeView1.Nodes.Add(dr.GetValue(1).ToString());
}
int a;
SqlConnection con1 = new SqlConnection(@".......;");
SqlCommand cmd1 = con1.CreateCommand();
cmd1.CommandText = "select * from Zijiedian";
con1.Open();
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
a = (Convert.ToInt32(dr1.GetValue(2)) - 1);
treeView1.Nodes[a].Nodes.Add(dr1.GetValue(1).ToString());
}
}
//下面代码是想删除父节点
dbCommand db = new dbCommand();//无视这边之前定义了一个总类的
string sql = "delete from Fujiedian where ID=@zid";
SqlParameter[] parm = new SqlParameter[]
{
new SqlParameter("zid",(Convert.ToInt32(this.treeView1.SelectedNode.Index))+1)
};
if (db.execNonQueryBySql(sql, parm))
{
MessageBox.Show("删除成功!");
}
现在问题就在这了。。按照我这样写的代码,删除分组的时候出现各种问题。。
我还是上两张图好看些吧。。
这是开始读取的数据库数据,除了feibeizhu这个没有子节点,其他都对应一个和跟自己名字一样的子节点
因为绑定了外键的,要先删除子节点才能删除父节点,我把feibeizhu这个父节点专门没设子节点,然后我将他删除,结果出现了这个问题。。。
删了之后子节点外溢了。。
求高手帮忙看看怎么回事,是我数据库没设计好还是代码有错误吗?希望帮忙改进一下我的程序,谢谢了!!顺便求高手帮忙写一下怎么删除选中的子节点(不用考虑判断选中的是不是子节点哈。。)
数据库 sql qq treeview --------------------编程问答-------------------- 有没有人啊。。。 --------------------编程问答-------------------- 表设计没问题,一般的做法是:
读取父节点数据集
父节点循环
针对于某个父节点id,去所有的子节点
循环把子节点加到父节点上
父节点循环结束
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
a = (Convert.ToInt32(dr1.GetValue(2)) - 1);
treeView1.Nodes[a].Nodes.Add(dr1.GetValue(1).ToString());
}
删除之后应该是你这块代码映射出了问题。 --------------------编程问答-------------------- 不知道你为什么要用2张表存,一张表就够了,
另外你绑定的也有问题,
用sql直接返回2个DataTable,然后循环绑定就可以了,,
如果有多级,用递归绑定。。
补充:.NET技术 , C#