您的位置:首页 > 数据库

C# WinForm TreeView 动态绑定数据库例如:省、市、区县 三级

2015-06-10 14:51 537 查看
前段时间做项目用到了TreeView,闲来没事自己想总结一下TreeView的绑定省市县的方法,希望对想学习的博友有所帮助。提示:省市县数据库可以在网上下载资源很多的。废话不多说了上代码……

用到的与数据库连接的方法:

/// <summary>
/// 执行查询数据
/// </summary>
/// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="para">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>>返回一个包含结果的DataSet</returns>
<span style="white-space:pre">	</span>GetDataSet(CommandType commandType, string cmdText, params SqlParameter[] para)

具体代码就不贴出来了,就是返回一个数据集。

接下来的代码就是对TreeView的绑定操作了

<span style="white-space:pre">	</span>private void BindTreeView()
{
TreeNode ProvinceNode, CityNode, DistrictNode;
DataSet ds = new DataSet();
DataTable table = new DataTable();
DataTable districtidTable = new DataTable();

string sql = "select provinceid,provincename from s_province";
string citySql = "select cityid,cityname from s_city where provinceid=@provinceid";
string districtSql = "select districtid,districtname from s_district where cityid=@cityid";
ds = DbHelp.GetDataSet(CommandType.Text, sql, null);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ProvinceNode = new TreeNode(); //创建【省】节点对象
ProvinceNode.Text = ds.Tables[0].Rows[i]["provincename"].ToString(); //显示节点的文本
ProvinceNode.Tag = int.Parse(ds.Tables[0].Rows[i]["provinceid"].ToString()); //保存对应节点的值
treeView1.Nodes.Add(ProvinceNode);  //将节点填充到树形控件上

SqlParameter[] parameters = {
new SqlParameter("@provinceid", SqlDbType.Int ,4) ,
};
// 设置参数类型
parameters[0].Value = int.Parse(ds.Tables[0].Rows[i]["provinceid"].ToString());
table = DbHelp.GetDataSet(CommandType.Text, citySql, parameters).Tables[0];
for (int j = 0; j < table.Rows.Count; j++)
{
CityNode = new TreeNode(); //创建【市级】节点
CityNode.Text = table.Rows[j]["cityname"].ToString(); //显示节点的文本

CityNode.Tag = int.Parse(table.Rows[j]["cityid"].ToString());//显示节点对应的值
ProvinceNode.Nodes.Add(CityNode); //将节点绑定到ProvinceNode中

SqlParameter[] district = {
new SqlParameter("@cityid", SqlDbType.Int ,4) ,
};
// 设置参数类型
district[0].Value = int.Parse(table.Rows[j]["cityid"].ToString());
districtidTable = DbHelp.GetDataSet(CommandType.Text, districtSql, district).Tables[0];
for (int n = 0; n < districtidTable.Rows.Count; n++)
{
DistrictNode = new TreeNode(); //创建【县区】节点
DistrictNode.Text = districtidTable.Rows
["districtname"].ToString(); //显示节点的文本
DistrictNode.Tag = int.Parse(districtidTable.Rows
["districtid"].ToString()); //显示节点对应的值
CityNode.Nodes.Add(DistrictNode); //将该节点填充到CityNode节点中
}
}
}
}
OK,齐活了这就……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息