为jstree中的复选框设置初始状态

时间:2015-04-02 07:30:27

标签: c# jquery html checkbox jstree

我目前正在制作一个C#MVC应用程序,我正在使用jsTree作为其中一个UI元素。我使用jsTree的复选框。我已经可以检索所有选定的值并将它们传递给我的控制器,以便它做它的事情,没有问题。

但是我在加载网页时填写jsTree时遇到了麻烦。目前我有这段代码:

        @foreach (var obj in listServers)
        {
            <li id="root_@obj.DBServerID">
                @obj.DBServerName
                <ul>
                    @{
                        System.Data.DataSet myDS = Model.findDataBasesByServerID(obj.DBServerID);
                        foreach (System.Data.DataRow row in myDS.Tables[0].Rows)
                        {

                                if (dbRepos.isThisDatabaseSelectedForThisUser(Model.LoginID, obj.DBServerID, nameOfDB) == true) //true -> user has selected this earlier and needs to be selected
                                {
                                    <li class="jstree-clicked get_checked" id="@(obj.DBServerID)_@nameOfDB">@nameOfDB </li>
                                }
                                else //false -> user hasn't selected this earlier. Make a normal, unchecked checkbox
                                {
                                    <li id="@(obj.DBServerID)_@nameOfDB">@nameOfDB </li>
                                }
                        }
                    }
                </ul>
            </li>
        }

代码仅部分有效。当然,我的jsTree很好,但默认值不会被检查。问题不在于我的isThisDatabaseSelectedForThisUser方法,因为我调试并测试了它。它按预期工作。我猜是&lt;类的类有问题了。 li>元素,但我无法弄清楚是什么。 get_checked属性在运行时给出,表示已单击并因此选中了复选框。请注意,我正在使用jsTree的复选框值,选择&lt;的文本。 li>元素并不重要。

1 个答案:

答案 0 :(得分:1)

好的,我决定尝试数据属性方法,而不是Class方法,最终工作。我使用以下代码并在加载页面时检查我的复选框:

< li data-jstree='{"opened":false,"selected":true}' id="@(obj.DBServerID)_@nameOfDB">@nameOfDB </li>
我觉得自己很蠢。