下面的代码从控制器
生成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;
}
The Ids'我从上面的行动方法得到的是Ids'的复选框 提前谢谢你...... :)
答案 0 :(得分:1)
Controller Action方法应该是这样的(即返回一个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");
}
}
}
}
});
}