wpf 带复选框的treeview_bootstrap-treeview 树形菜单带复选框以及级联选择

本文介绍了如何在WPF应用中实现带复选框的TreeView,并提供了级联选择功能。通过示例代码展示了节点选中和取消选中时,如何递归地影响父节点和子节点的状态,实现全选和全取消的效果。
摘要由CSDN通过智能技术生成

var treeData =[{

text:"Parent 1",

nodes: [{

text:"Child 1",

nodes: [{

text:"Grandchild 1"}, {

text:"Grandchild 2",

nodes: [{

text:"Grandchild 2-1",

nodes: [{

text:"Grandchild 2-1-1"}, {

text:"Grandchild 2-2-1",

}]

}, {

text:"Grandchild 1-2",

}]

}]

}, {

text:"Child 2",

nodes: [{

text:"Grandchild 2-1"}, {

text:"Grandchild 2-2",

}]

}]

}, {

text:"Parent 2",

id:'11111'}, {

text:"Parent 3"}, {

text:"Parent 4"}, {

text:"Parent 5"}];var nodeCheckedSilent = false;functionnodeChecked(event, node) {if(nodeCheckedSilent) {return;

}

nodeCheckedSilent= true;

checkAllParent(node);

checkAllSon(node);

nodeCheckedSilent= false;

}var nodeUncheckedSilent = false;functionnodeUnchecked(event, node) {if(nodeUncheckedSilent)return;

nodeUncheckedSilent= true;

uncheckAllParent(node);

uncheckAllSon(node);

nodeUncheckedSilent= false;

}//选中全部父节点

functioncheckAllParent(node) {

$('#searchTree').treeview('checkNode', node.nodeId, {

silent:true});var parentNode = $('#searchTree').treeview('getParent', node.nodeId);if (!("nodeId" inparentNode)) {return;

}else{

checkAllParent(parentNode);

}

}//取消全部父节点

functionuncheckAllParent(node) {

$('#searchTree').treeview('uncheckNode', node.nodeId, {

silent:true});var siblings = $('#searchTree').treeview('getSiblings', node.nodeId);var parentNode = $('#searchTree').treeview('getParent', node.nodeId);if (!("nodeId" inparentNode)) {return;

}var isAllUnchecked = true; //是否全部没选中

for (var i insiblings) {if(siblings[i].state.checked) {

isAllUnchecked= false;break;

}

}if(isAllUnchecked) {

uncheckAllParent(parentNode);

}

}//级联选中所有子节点

functioncheckAllSon(node) {

$('#searchTree').treeview('checkNode', node.nodeId, {

silent:true});if (node.nodes != null && node.nodes.length > 0) {for (var i innode.nodes) {

checkAllSon(node.nodes[i]);

}

}

}//级联取消所有子节点

functionuncheckAllSon(node) {

$('#searchTree').treeview('uncheckNode', node.nodeId, {

silent:true});if (node.nodes != null && node.nodes.length > 0) {for (var i innode.nodes) {

uncheckAllSon(node.nodes[i]);

}

}

}

$('#searchTree').treeview({

showCheckbox:true,

data: treeData,

onNodeChecked: nodeChecked,

onNodeUnchecked: nodeUnchecked

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现全选复选框的列表控件,可以使用WPF中的ListView控件和GridViewColumnHeader控件来实现。 首先,在ListView中添加一个CheckBox列作为全选复选框,可以使用GridViewColumnHeader控件来实现。在该控件的Click事件中,可以遍历ListView中的所有数据项,并将其对应的CheckBox控件的IsChecked属性设置为GridViewColumnHeader的IsChecked属性值。 以下是一个简单的示例代码: ```xml <ListView> <ListView.View> <GridView> <GridViewColumn> <GridViewColumnHeader Click="GridViewColumnHeader_Click"> <CheckBox x:Name="chkSelectAll" /> </GridViewColumnHeader> </GridViewColumn> <GridViewColumn Header="姓名" DisplayMemberBinding="{Binding Name}" /> <GridViewColumn Header="年龄" DisplayMemberBinding="{Binding Age}" /> <GridViewColumn Header="性别" DisplayMemberBinding="{Binding Gender}" /> </GridView> </ListView.View> </ListView> ``` ```csharp private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e) { foreach (var item in listView.Items) { var container = listView.ItemContainerGenerator.ContainerFromItem(item) as ListViewItem; var checkBox = FindVisualChild<CheckBox>(container); checkBox.IsChecked = chkSelectAll.IsChecked; } } private T FindVisualChild<T>(DependencyObject obj) where T : DependencyObject { if (obj != null) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { var child = VisualTreeHelper.GetChild(obj, i); if (child != null && child is T) return (T)child; var childOfChild = FindVisualChild<T>(child); if (childOfChild != null) return childOfChild; } } return null; } ``` 在上面的示例代码中,FindVisualChild方法用于查找ListViewItem中的CheckBox控件。可以将该方法封装成一个扩展方法,以便在其他地方重复使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值