您的位置:首页 > 数据库

关于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);

}

}

通过这三级,我发现,它们每次绑定的方法差不多,只是在每一级的方法中调用下一级的方法,做为它的枝或者叶
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: