关于VS2005中TreeView控件动态绑定数据库
2008-10-22 15:29
375 查看
由于一直做Web开发,对于TreeView这个控件用的比较少,今天在做桌面应用程序的时候,遇到了这个控件,项目中的需求是需要分三级,动态从数据库中绑定,下面是我实现的方法,供大家参考
第一级
private void BindTree()
{
DataSet ds = new DataSet();
string sql = "select * from Address";
ds = adb.getDataSet(sql, "Address");
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressID"].ToString()+" "+ dr["AddressName"].ToString(); //根据需求要帮你数据库中的两列
tn.Value = dr["AddressID"].ToString();
TreeView1.Nodes[0].ChildNodes.Add(tn);
BandingAddressOne(tn); //第二级的方法
}
}
第二级
public void BandingAddressOne(TreeNode node)
{
int id = Convert.ToInt32(node.Value);
DataSet ds = new DataSet();
string sql = string.Format("select * from AddressOne where AddressID={0}", id);
ds = adb.getDataSet(sql, "AddressOne");
foreach (DataRow dr in ds.Tables["AddressOne"].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressOneID"].ToString()+" "+ dr["AddressOneName"].ToString();
tn.Value = dr["AddressOneID"].ToString();
node.ChildNodes.Add(tn);//在这个地方我一开始遇到了一个问题,就是之前写的是 TreeView1.Nodes//[0].ChildNodes.Add(tn); 而这样出现的结果是,当我点击第一级,也就是根的时候,本来要绑定的第二级也成了第一级,当我多次点击的时候,就会循环的绑定。
BandingAddressTwo(tn);
}
}
第三级
public void BandingAddressTwo(TreeNode node)
{
int id = Convert.ToInt32(node.Value);
DataSet ds = new DataSet();
string sql = string.Format("select * from AddressTwo where AddressOneID={0}", id);
ds = adb.getDataSet(sql, "AddressTwo");
foreach (DataRow dr in ds.Tables["AddressTwo"].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressTwoID"].ToString()+" "+ dr["AddressTwoName"].ToString();
tn.Value = dr["AddressTwoID"].ToString();
node.ChildNodes.Add(tn);
}
}
通过这三级,我发现,它们每次绑定的方法差不多,只是在每一级的方法中调用下一级的方法,做为它的枝或者叶
第一级
private void BindTree()
{
DataSet ds = new DataSet();
string sql = "select * from Address";
ds = adb.getDataSet(sql, "Address");
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressID"].ToString()+" "+ dr["AddressName"].ToString(); //根据需求要帮你数据库中的两列
tn.Value = dr["AddressID"].ToString();
TreeView1.Nodes[0].ChildNodes.Add(tn);
BandingAddressOne(tn); //第二级的方法
}
}
第二级
public void BandingAddressOne(TreeNode node)
{
int id = Convert.ToInt32(node.Value);
DataSet ds = new DataSet();
string sql = string.Format("select * from AddressOne where AddressID={0}", id);
ds = adb.getDataSet(sql, "AddressOne");
foreach (DataRow dr in ds.Tables["AddressOne"].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressOneID"].ToString()+" "+ dr["AddressOneName"].ToString();
tn.Value = dr["AddressOneID"].ToString();
node.ChildNodes.Add(tn);//在这个地方我一开始遇到了一个问题,就是之前写的是 TreeView1.Nodes//[0].ChildNodes.Add(tn); 而这样出现的结果是,当我点击第一级,也就是根的时候,本来要绑定的第二级也成了第一级,当我多次点击的时候,就会循环的绑定。
BandingAddressTwo(tn);
}
}
第三级
public void BandingAddressTwo(TreeNode node)
{
int id = Convert.ToInt32(node.Value);
DataSet ds = new DataSet();
string sql = string.Format("select * from AddressTwo where AddressOneID={0}", id);
ds = adb.getDataSet(sql, "AddressTwo");
foreach (DataRow dr in ds.Tables["AddressTwo"].Rows)
{
TreeNode tn = new TreeNode();
tn.Text =dr["AddressTwoID"].ToString()+" "+ dr["AddressTwoName"].ToString();
tn.Value = dr["AddressTwoID"].ToString();
node.ChildNodes.Add(tn);
}
}
通过这三级,我发现,它们每次绑定的方法差不多,只是在每一级的方法中调用下一级的方法,做为它的枝或者叶
相关文章推荐
- C# TreeView控件动态绑定数据库
- 树形控件TreeView与数据库绑定
- treeview 控件动态绑定数据部分实例代码
- C# treeview 控件动态绑定数据
- 关于DataGrid Web Control 动态绑定2--子控件的获取
- 关于如何递归给TreeView从数据库中循环绑定数据
- C# TreeView树视图控件 如何把树与数据库的信息进行绑定
- vs2005控件TreeView的绑定
- 转发 C#从数据库动态邦定TreeView控件
- TreeView控件绑定数据库
- C#动态从数据库中取值绑定TreeView节点
- TreeView树形控件递归绑定数据库里的数据
- treeview控件(动态数据绑定+整行选择)(WPF)(一)
- TreeView控件数据库绑定
- 关于TreeView绑定数据库的表数据如何,代码在前两篇博文中~~
- ASP.NET TreeView动态绑定数据库显示
- 【转载】关于TreeView和数据库如何进行绑定显示
- 我想用 TreeView控件来绑定数据库中的产品(产品在数据库中有三级),我不会绑定!!哪位高人可以告诉我怎么写?
- asp.net TreeView动态绑定数据库显示数据
- TreeView控件绑定多个数据库表