最近搞权限管理这个模块,所以做到用到TreeView这个控件,我在这里用其生成如下的样式
在前台只需要绑定一个TreeView控件
功能项:<asp:TreeView runat="server" ID="TR_Function" Width="40px" ></asp:TreeView>
关键是后台代码的实现
//查出所有的Function项,并将其结果绑定到树形表中。使用递归的方法。 private void BindTreeView(List<YJPS_HBM_Function> _listFunction) { List<YJPS_HBM_Function> _fatherFunction = new List<YJPS_HBM_Function>(); _fatherFunction = _listFunction.Where(d => d.FatherFunctionName == null).ToList(); foreach (YJPS_HBM_Function _function in _fatherFunction) { TreeNode tn = new TreeNode(); tn.Text = _function.FunctionName; TR_Function.Nodes.Add(tn); tn.ShowCheckBox = true; tn.Expanded = false; AddChildNode(_listFunction, tn, tn.Text); } } private void AddChildNode(List<YJPS_HBM_Function> _listFunction, TreeNode _tn, string _str) { List<YJPS_HBM_Function> _childFunction = new List<YJPS_HBM_Function>(); _childFunction = _listFunction.Where(d => d.FatherFunctionName == _str).ToList(); foreach (YJPS_HBM_Function _dep in _childFunction) { TreeNode tc = new TreeNode(); tc.Text = _dep.FunctionName; _tn.ChildNodes.Add(tc); tc.ShowCheckBox = true; tc.Expanded = false; AddChildNode(_listFunction, tc, tc.Text); } } //现在同样用递归的方法,去遍历树形表,获取选中的值。 private void NavigateTreeView(TreeView _treeView, int _authorityID) { for (int i = 0; i < _treeView.Nodes.Count; i++) { if (_treeView.Nodes[i].Checked) { YJPS_HBM_AuthorityFunction _authorityFunction = new YJPS_HBM_AuthorityFunction(); _authorityFunction.AuthorityID = _authorityID; _authorityFunction.FunctionID = _BLLFunction.GetFunctionByName(_treeView.Nodes[i].Text).ToList()[0].FunctionID; if (Add(_authorityFunction)) { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "", "alert('添加成功')", true); } else { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "", "alert('添加失败')", true); } } NavigateTreeNodes(_treeView.Nodes[i], _authorityID); } } private void NavigateTreeNodes(TreeNode _treeNode, int _authorityID) { for (int i = 0; i < _treeNode.ChildNodes.Count; i++) { //如果选中 则添加进YJPS_HBM_AuthorityFunction表 if (_treeNode.ChildNodes[i].Checked) { YJPS_HBM_AuthorityFunction _authorityFunction = new YJPS_HBM_AuthorityFunction(); _authorityFunction.AuthorityID = _authorityID; _authorityFunction.FunctionID = _BLLFunction.GetFunctionByName(_treeNode.ChildNodes[i].Text).ToList()[0].FunctionID; if (Add(_authorityFunction)) { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "", "alert('添加成功')", true); } else { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "", "alert('添加失败')", true); } } NavigateTreeNodes(_treeNode.ChildNodes[i], _authorityID); } }