jsTree 3 - 如何在不选择项目的情况下预先检查项目

时间:2015-05-24 12:41:20

标签: checkbox jstree

我正在使用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>

在这三种方法中,第一种方法是选择和检查节点。第二个和第三个结果是既未选中也未选中的节点。我想获得一个已选中但未被选中的节点。

1 个答案:

答案 0 :(得分:3)

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

获得最新副本(不是3.1.1,但实际的回购代码:https://github.com/vakata/jstree/archive/master.zip)后,您可以使用:

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

以下是演示:http://jsfiddle.net/DGAF4/516/