C# WinForm TreeView 动态绑定数据库例如:省、市、区县 三级
2015-06-10 14:51
537 查看
前段时间做项目用到了TreeView,闲来没事自己想总结一下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,齐活了这就……
相关文章推荐
- 解决Oracle10G乱码问题
- Oracle RMAN 兼容性 及 不同版本和不同平台之间使用 常见问题说明
- startup migrate、startup upgrade区别以及Oracle打补丁集文档(转)
- 好玩的SQL
- Oracle无法启动,ORA-01034、ORA-01078
- Redis 起步
- sql数据库varchar和nvarchar坑
- Mysql避免全表扫描sql查询优化 .
- 远程访问MySQL数据库方法
- PL/SQL Developer 连接远程的Oracle 服务器
- mysql数据库备份--java代码
- MYSQL数据库学习五 表的操作和约束
- wan5
- mysql 自已更新更新了日期字段问题
- mysql workbench建模导出sql文件创建数据库注释乱码
- SQL Server中的锁
- Mysql查询优化器
- redis教程03
- Nginx+tomcat+memcached集群session共享(win7下)
- 整合spring、redis