【问题标题】:jsTree 3 - How do I pre-check an item without selecting itjsTree 3 - 如何在不选择项目的情况下预先检查项目
【发布时间】:2015-05-24 12:41:19
【问题描述】:

我正在使用 jsTree 3 并尝试根据标准预先检查一些行。

这是我配置树的方式:-

    $(function () {
        $("#ProductInterests").jstree
            ({
                "core" : { "themes" : { "icons" : false }},
                "plugins": ["themes", "html_data", "checkbox"]
            });

    });

然后我在网上的其他地方找到了三个建议的解决方案(if 的前半部分应该导致检查节点,第二部分应该导致未检查节点):-

<ul>
    @foreach (var productGroup in ViewBag.ProductGroups)
    {
        <li class="jstree-open">@productGroup.Name
            <ul>
                @foreach (var product in productGroup.Products)
                {
                    if (Model.LeadProductInterests.Any(lpi => lpi.ProductID == product.ID))
                    { 
                        <li data-jstree='{"selected":true}'>@product.Name</li>
                        <li data-jstree='{"state":{"checked":true}}'>@product.Name</li>
                        <li class="jstree-checked">@product.Name</li>
                }
                    else
                    { 
                        <li data-jstree='{"selected":false}'>@product.Name</li> 
                        <li data-jstree='{"state":{"checked":false}}'>@product.Name</li>
                        <li>@product.Name</li>
                    }
                }
            </ul>
        </li>
    }
</ul>

在这三种方法中,第一种方法会导致节点同时被选中和检查。第二个和第三个导致既没有选择也没有检查的节点。我想得到一个已选中但未选中的节点。

【问题讨论】:

    标签: checkbox jstree


    【解决方案1】:

    从 repo 获取最新代码 - 这是一个已知错误,现已修复。还要记住,为了有单独的选中和选定集合,您需要将checkbox.tie_selection 设置为false(如下面的小提琴所示)。

    一旦你得到最新的副本(不是 3.1.1,而是实际的 repo 代码:https://github.com/vakata/jstree/archive/master.zip),你可以使用这个:

    <li data-jstree='{"checked":true}'>@product.Name</li>
    

    这里是演示:http://jsfiddle.net/DGAF4/516/

    【讨论】:

    • 完美。我已经下载了最新的副本,但没有意识到我需要设置 tie_selection 选项。那解决了它。 (我会投票赞成,但还没有代表
    • edit> 哎呀,很快就谈过了。它仍然没有选中该框。更新原帖中的代码
    • 啊,无法更新原始帖子,并且将代码放在评论中使其太长。配置现在包括:- checkbox : { tie_selection : false } 这将产生一个未选中的框:-
    • @product.Name
  • 如果我提供的小提琴有效,它也应该在您的代码中有效。确保您的配置与小提琴中的一样,并且您已清除浏览器缓存并且您正在使用 jstree 的最新副本。如果可行,您可以简单地接受答案:)
  • Huzzah,今天早上试过了,效果很好。猜猜我可能正在处理一个脏缓存。感谢您的所有帮助,并祝贺您完成了出色的工作。另外,我终于看到了接受按钮 :)
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签