2015-04-02 156 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> 

我覺得很蠢。

相關問題