aceadmin1.4框架treeview多选改造

有部分内容参考以下地址进行改造:

https://www.cnblogs.com/louis80/p/5093901.html

效果

改造前:

改造后:

 

tree.js文件

selectTreeNode: function selectItem(clickedElement, nodeType) {中的

if (nodeType === 'folder') {
                // make the clicked.$element the container branch
                clicked.$element = clicked.$element.closest('.tree-branch');
                clicked.$icon = clicked.$element.find('.icon-item');
  }

改为:

if (nodeType === 'folder') {
                // make the clicked.$element the container branch
                clicked.$element = clicked.$element.closest('.tree-branch');
                clicked.$icon = clicked.$element.find('.icon-folder');
   }

function styleNodeSelected (self, $element, $icon) {//ACE方法最后加入:

if ( $element.data('type') === 'folder' && $icon.hasClass(self.options['unselected-icon']) ) {
            $icon.removeClass(self.options['unselected-icon']).addClass(self.options['selected-icon']); //ACE
            $element.find("li").addClass("tree-selected");
   }

function styleNodeDeselected (self, $element, $icon) {//ACE方法最后加入:

if ( $element.data('type') === 'folder' && $icon.hasClass(self.options['selected-icon']) ) {
            $icon.removeClass(self.options['selected-icon']).addClass(self.options['unselected-icon']).removeClass("tree-selected"); //ACE
            $element.find("li").removeClass("tree-selected");
   }

 

elements.treeview.js文件

$.fn.aceTree = $.fn.ace_tree = function(options) { 下的

<div class="tree-branch-header">\
                    <span class="tree-branch-name">\
                        <i class="icon-folder '+$options['close-icon']+'"></i>\
                        <span class="tree-label"></span>\
                    </span>\
                </div>\

改为:

<div class="tree-branch-header">\
                    <span class="tree-branch-name">\
                        <i class="icon-folder '+$options['close-icon']+'"></i>\
                        '+($options['folderSelect'] ? ($options['unselected-icon'] == null ? '' : '<i class="icon-item '+$options['unselected-icon']+'"></i>') : '')+'\
                        <span class="tree-label"></span>\
                    </span>\
                </div>\

ace.css文件:

.tree .icon-caret {
  vertical-align: baseline !important;
}

注释,改为:

.tree .icon-caret {
  /* vertical-align: baseline !important; */
}

在下面这段之后

.tree-container .tree::before {
  margin-left: -1px;
}

插入:

.tree .tree-branch > .tree-branch-header > .tree-branch-name > .icon-item {
      color: #F9E8CE;
      width: 13px;
      height: 13px;
      line-height: 13px;
      font-size: 11px;
      text-align: center;
      border-radius: 3px;
      -webkit-box-sizing: content-box;
      -moz-box-sizing: content-box;
      box-sizing: content-box;
      background-color: #FAFAFA;
      border: 1px solid #CCC;
      box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

效果页:treeview.html文件:

$('#tree1').ace_tree({
        dataSource: sampleData['dataSource1'],
        multiSelect: true,
        cacheItems: true,
        'open-icon' : 'ace-icon tree-minus',
        'close-icon' : 'ace-icon tree-plus',
        'itemSelect' : true,
        'folderSelect': false,
        'selected-icon' : 'ace-icon fa fa-check',
        'unselected-icon' : 'ace-icon fa fa-times',
        loadingHTML : '<div class="tree-loading"><i class="ace-icon fa fa-refresh fa-spin blue"></i></div>'
    });

改为:

$('#tree1').ace_tree({
        dataSource: sampleData['dataSource1'],
         multiSelect: true,
        cacheItems: true,
        'open-icon' : 'ace-icon tree-minus hide',
        'close-icon' : 'ace-icon tree-plus hide',
        'folderSelect': true,
        'selectable' : true,

        'selected-icon' : 'ace-icon fa fa-check',
        'unselected-icon' : 'ace-icon fa fa-times',
        'folder-open-icon' : 'ace-icon tree-plus',
        'folder-close-icon' : 'ace-icon tree-minus',

        loadingHTML: '<div class="tree-loading"><i class="ace-icon fa fa-refresh fa-spin blue"></i></div>'
    });

到此结束。

完整aceadmin1.4代码请移步:https://download.csdn.net/download/ohaozy/10583828

放一张我项目里的效果图:实现了自动展开、自动勾选已选择项,是不是挺漂亮?

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WPF TreeView 可以通过设置 SelectionMode 属性来启用多选模式。默认情况下,TreeView 的 SelectionMode 属性是 Single,只能选择一个节点。如果要启用多选模式,可以将 SelectionMode 属性设置为 Extended。 以下是一个简单的示例,演示如何在 WPF TreeView 中启用多选模式: ```xml <TreeView ItemsSource="{Binding Items}" SelectionMode="Extended"> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> </Style> </TreeView.ItemContainerStyle> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" /> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> ``` 在上面的示例中,我们将 TreeView 的 SelectionMode 属性设置为 Extended,使其启用多选模式。然后,我们使用 TreeViewItem 的样式将其 IsSelected 属性绑定到 ViewModel 中的 IsSelected 属性。最后,我们使用 HierarchicalDataTemplate 定义 TreeView 的节点模板。 ViewModel 代码如下: ```csharp public class ItemViewModel : INotifyPropertyChanged { public string Name { get; set; } public ObservableCollection<ItemViewModel> Children { get; set; } private bool _isSelected; public bool IsSelected { get { return _isSelected; } set { if (_isSelected != value) { _isSelected = value; OnPropertyChanged(nameof(IsSelected)); } } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 在 ViewModel 中,我们定义了一个 IsSelected 属性,并在 TreeViewItem 的样式中将其绑定到 TreeView 中的 IsSelected 属性。当用户选择或取消选择节点时,ViewModel 中的 IsSelected 属性将更新。 希望这个示例可以帮助你实现 WPF TreeView多选模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值