------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
在开发程序中我们会经常用到递归,比如菜单的展示、TreeView控件节点数据的绑定等。
下面以查询slqserver数据库T_GoodsStock表中的数据,然后绑定到TreeView中为例。
数据库表T_GoodsStock:
代码如下:
窗体加载时,执行LoadGoodsToTree()方法,将数据加载绑定到TreeView控件上。
- /// <summary>
- /// 加载ParentId=-1的项到treeView结点上
- /// </summary>
- private void LoadGoodsToTree()
- {
- //加载前清空Nodes
- treeViewGoods.Nodes.Clear();
- List<string> goodsList = new List<string>();
- string sql = "select * from T_GoodsStock where ParentId=-1";
- using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, CommandType.Text))
- {
- if (reader.HasRows)
- {
- while (reader.Read())
- {
- GoodsStock gs = new GoodsStock();
- gs.Id = reader.GetInt32(0);
- gs.Goods = reader.GetString(1);
- TreeNode tNode = treeViewGoods.Nodes.Add(gs.ToString());
- tNode.Tag = gs.Id;
- //如果用户不是系统管理员,则没有添加、删除、修改类目功能
- if (UserMsg.level == 1)
- {
- tNode.ContextMenuStrip = ctmsType;
- }
- LoadSubToTree(tNode);
- }
- }
- }
- }
递归加载节点的子数据
- /// <summary>
- /// 递归加载到treeView上
- /// </summary>
- /// <param name="tNode"></param>
- private void LoadSubToTree(TreeNode tNode)
- {
- string sql = "select * from T_GoodsStock where ParentId=@parentId";
- SqlParameter pms = new SqlParameter("@parentId", tNode.Tag);
- using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, CommandType.Text, pms))
- {
- if (reader.HasRows)
- {
- while (reader.Read())
- {
- GoodsStock gs = new GoodsStock();
- gs.Id = reader.GetInt32(0);
- gs.Goods = reader.GetString(1);
- TreeNode tSubNode = tNode.Nodes.Add(gs.ToString());
- tSubNode.Tag = gs.Id;
- if (UserMsg.level == 1)
- {
- tSubNode.ContextMenuStrip = ctmsType;
- }
- LoadSubToTree(tSubNode);
- }
- }
- }
- }
代码实现效果