关于treeview控件中checkboxes属性 我想实现控件加载的时候 treeview 的所有 checkboxex为选中状态然后根据权限,判断某些子节点为false,球代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有该权限就checked=true,没就false - - 这些我都知道啊,需要代码参考一下,关键那些node我弄不清。 triview是分父node和子node的,里面还有一个属性叫tag的,可以保存你要保存的ID,也可以是表示等等然后就好判断了 for (int i = 0; i < powerParent.Count; i++)//一级资源 { PowerList.Nodes.Add(powerParent[i].PowerName); PowerList.Nodes[i].Tag = powerParent[i].ID; //如果角色拥有此权限,则选定该节点 if (RolePowerList.Find(p => p.PowerID == powerParent[i].ID) != null) PowerList.Nodes[i].Checked = true; List<Power> powerChild = powerBll.GetChildNodeByParentID(powerParent[i].ID); if (powerChild == null) continue; for (int j = 0; j < powerChild.Count; j++)//二级资源 { PowerList.Nodes[i].Nodes.Add(powerChild[j].PowerName); PowerList.Nodes[i].Nodes[j].Tag = powerChild[j].ID; //如果角色拥有此权限,则选定该节点 if (RolePowerList.Find(p => p.PowerID == powerChild[j].ID) != null) PowerList.Nodes[i].Nodes[j].Checked = true; }大概就是这个样子,自己根据需要去改 js:控件:<div style="background: #FFFFFF;"> <asp:TreeView ID="tvLeft" runat="server" ShowExpandCollapse="true" ExpandDepth="1" ShowLines="True"> </asp:TreeView> </div>code:TreeNode ParentNode;datatable dt = xxx;//绑定数据for()//父节点循环{ node.Value = Value; node.Text = Text; node.ShowCheckBox = true; for()//子节点循环 { TreeNode node = new TreeNode(); node.Value = Value; node.Text = Text; node.ShowCheckBox = true; if(ischeck)//如果有权限{ node.Checked = true;} ParentNode.ChildNodes.Add(node ); }tvLeft.Nodes.Add(ParentNode);//把节点绑定到树中} //判断节点是否选中,遍历树时看node.Checked = true;还是false就可以了//点击使权限变成false可以添加个保存按钮,点击时改变数据库值//代码仅供参考,没有验证,希望对lz有用,呵呵 #region 读取权限数据,设置已选取节点的CheckBox为True public static void SelCheckNodes(TreeView tree, string[] jsqx) { //SetNodesChkFalse(tree); foreach (TreeNode tn in tree.Nodes) { foreach (string nodevalue in jsqx) { if (nodevalue == tn.Value) { tn.Checked = true; } } SelCheckChildNodes(tn, jsqx); } } private static void SelCheckChildNodes(TreeNode node, string[] jsqx) { if (node.ChildNodes.Count > 0) { foreach (TreeNode tn in node.ChildNodes) { foreach (string nodevalue in jsqx) { if (nodevalue == tn.Value) { tn.Checked = true; } } SelCheckChildNodes(tn, jsqx); } } } #endregion 关于水晶报表打印问题 导航链接地址的问题呀 System.Windows.Forms.Timer tmr=sender as System.Windows.Forms.Timer; <%#和<%=有什么区别呀? c#关闭窗口 初学者很急的问题:ListBox数据保存问题! 如何创建二进制文件? 验证码识别 请教一个数据库连接的问题: HELP,请大家回答具体点好吗? 像省份,行业这种变化很小的表,读取频繁,占用资源,怎么设计比较好? wpf 取消按下tab键的控件被选择
里面还有一个属性叫tag的,可以保存你要保存的ID,也可以是表示等等
然后就好判断了
PowerList.Nodes.Add(powerParent[i].PowerName);
PowerList.Nodes[i].Tag = powerParent[i].ID;
//如果角色拥有此权限,则选定该节点 if (RolePowerList.Find(p => p.PowerID == powerParent[i].ID) != null) PowerList.Nodes[i].Checked = true; List<Power> powerChild = powerBll.GetChildNodeByParentID(powerParent[i].ID);
if (powerChild == null) continue;
for (int j = 0; j < powerChild.Count; j++)//二级资源
{
PowerList.Nodes[i].Nodes.Add(powerChild[j].PowerName);
PowerList.Nodes[i].Nodes[j].Tag = powerChild[j].ID;
//如果角色拥有此权限,则选定该节点 if (RolePowerList.Find(p => p.PowerID == powerChild[j].ID) != null) PowerList.Nodes[i].Nodes[j].Checked = true;
}
大概就是这个样子,自己根据需要去改
js:
控件:<div style="background: #FFFFFF;">
<asp:TreeView ID="tvLeft" runat="server" ShowExpandCollapse="true" ExpandDepth="1" ShowLines="True">
</asp:TreeView>
</div>code:
TreeNode ParentNode;
datatable dt = xxx;//绑定数据
for()//父节点循环
{
node.Value = Value;
node.Text = Text;
node.ShowCheckBox = true;
for()//子节点循环
{
TreeNode node = new TreeNode();
node.Value = Value;
node.Text = Text;
node.ShowCheckBox = true;
if(ischeck)//如果有权限
{
node.Checked = true;
}
ParentNode.ChildNodes.Add(node );
}
tvLeft.Nodes.Add(ParentNode);//把节点绑定到树中
}
//判断节点是否选中,遍历树时看node.Checked = true;还是false就可以了
//点击使权限变成false可以添加个保存按钮,点击时改变数据库值
//代码仅供参考,没有验证,希望对lz有用,呵呵
#region 读取权限数据,设置已选取节点的CheckBox为True
public static void SelCheckNodes(TreeView tree, string[] jsqx)
{
//SetNodesChkFalse(tree);
foreach (TreeNode tn in tree.Nodes)
{
foreach (string nodevalue in jsqx)
{
if (nodevalue == tn.Value) { tn.Checked = true; }
}
SelCheckChildNodes(tn, jsqx);
}
}
private static void SelCheckChildNodes(TreeNode node, string[] jsqx)
{
if (node.ChildNodes.Count > 0)
{
foreach (TreeNode tn in node.ChildNodes)
{
foreach (string nodevalue in jsqx)
{
if (nodevalue == tn.Value) { tn.Checked = true; }
}
SelCheckChildNodes(tn, jsqx);
}
}
}
#endregion