2015-04-02 161 views
0

我目前正在制作一个C#MVC应用程序,其中我为其中一个UI元素使用了jsTree。我使用jsTree复选框。我已经可以检索所有选定的值并将它们传递给我的控制器,以便它完成它的工作,在那里没有问题。在jstree中为复选框设置初始状态

但我在加载网页时填写jsTree时遇到了问题。目前我有这样的代码:

 @foreach (var obj in listServers) 
     { 
      <li id="[email protected]"> 
       @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)[email protected]">@nameOfDB </li> 
           } 
           else //false -> user hasn't selected this earlier. Make a normal, unchecked checkbox 
           { 
            <li id="@(obj.DBServerID)[email protected]">@nameOfDB </li> 
           } 
         } 
        } 
       </ul> 
      </li> 
     } 

该代码只能部分工作。自然,我的jsTree获得了很好,但默认值不检查。问题不在于我的isThisDatabaseSelectedForThisUser方法,导致我调试并测试它。它按预期工作。我猜想< li>元素的类有问题,但我无法弄清楚什么。 get_checked属性在运行时给出,表示复选框已被点击并因此被选中。请注意,我正在处理jsTree的复选框值,因此选择< li>元素的文本并不重要。

+0

正如我从演示中看到的那样,''''里面的''''''''''''得到'jstree-clicked'类而不是'li'标签。看到下面的HTML 'initially selected' 所以我认为你需要**重组你的HTML **。 – 2015-04-02 07:56:26

回答

1

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

< li data-jstree='{"opened":false,"selected":true}' id="@(obj.DBServerID)[email protected]">@nameOfDB </li> 

我觉得很蠢。

相关问题