我目前正在制作一个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>元素并不重要。
答案 0 :(得分:1)
好的,我决定尝试数据属性方法,而不是Class方法,最终工作。我使用以下代码并在加载页面时检查我的复选框:
< li data-jstree='{"opened":false,"selected":true}' id="@(obj.DBServerID)_@nameOfDB">@nameOfDB </li>
我觉得自己很蠢。