2015-10-07 21 views
0

下面的代碼從控制器產生的劍道樹視圖中的節點如何使用從控制器傳遞的值來檢查kendo樹視圖中的複選框?

var datasource = new kendo.data.HierarchicalDataSource({ 
 
    transport: { 
 
    read: function(options) { 
 
     var id = options.data.ModuleId; 
 
     $.ajax({ 
 
     url: '/MapModuleTask/LoadTreeView', 
 
     dataType: "json", 
 
     data: { 
 
      id: id 
 
     }, 
 
     success: function(result) { 
 
      options.success(result); 
 
     }, 
 
     error: function(result) { 
 
      options.error(result); 
 
     } 
 
     }); 
 
    } 
 
    }, 
 
    schema: { 
 
    model: { 
 
     id: "ModuleId", 
 
     hasChildren: "hasChildren" 
 
    } 
 
    } 
 
});

我想填充/使用的ID,我從我的控制器得到檢查這些複選框

這是我的控制器動作方法

public int?[] LoadModulesByFranchisorId(string FranchisorId) 
    { 
     int?[] modules; 
     var modulesList = (from a in db.MapModuleFranchisors where a.FranchsiorId == FranchisorId && a.ModuleFlag == 1 select a.ModuleId).AsEnumerable().ToArray(); 
     modules = modulesList; 
     return modules; 
    } 

的ID我從上面的操作方法得到的是IDS'的複選框的 預先感謝您... :)

回答

1

控制器的操作方法應該是這樣的(即返回Json響應)。

public JsonResult getModulesByFranchisorID(string FranchisorId) 
    { 
     var FranchisorModules = (from a in db.MapModuleFranchisors 
           where a.FranchsiorId == FranchisorId && a.ModuleFlag == 1 
           select new 
           { 
            a.ModuleId, 
           }).AsEnumerable(); 
     return Json(FranchisorModules, JsonRequestBehavior.AllowGet); 
    } 

我在ajax'success'語句中調用了以下方法。這將從控制器返回的值中選中複選框。

function checkNodes() { 
 
    treeView = $("#treeview").data("kendoTreeView"); 
 
    var tpNodes = treeView.dataSource.view(); 
 
    var FranchisorId = '@Model.FranchisorId'; 
 

 
    $.ajax({ 
 
    type: "POST", 
 
    url: "/MapModuleTask/getModulesByFranchisorID", 
 
    data: { 
 
     FranchisorId: FranchisorId 
 
    }, 
 
    success: function(data) { 
 
     var dataLength = data.length; 
 
     console.log(dataLength); 
 
     console.log(tpNodes); 
 
     for (var i = 0; i < dataLength; i++) { 
 

 
     for (j = 0; j < tpNodes.length; j++) { 
 
      debugger; 
 
      if (tpNodes[j].ModuleId == data[i].ModuleId) { 
 
      debugger; 
 
      var selectitem = treeView.findByUid(tpNodes[j].uid); 
 
      selectitem.addClass('k-state-selected'); 
 
      treeView.select().find(".k-checkbox input").attr("checked", "true"); 
 

 
      } 
 
     } 
 
     } 
 
    } 
 
    }); 
 
}
有可能會更好或更有效的方式,這是爲我工作。隨時糾正我。 謝謝。

相關問題