如何使用从控制器传递的值在剑道树视图中检查复选框
本文关键字:视图 复选框 检查 何使用 控制器 | 更新日期: 2023-09-27 18:16:37
下面的代码从控制器
为kendo treeview生成节点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是复选框的id提前谢谢你……:)
Controller Action方法应该是这样的(i;(返回一个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");
}
}
}
}
});
}
也许有更好或更有效的方法,这对我来说很有效。请随时纠正我。谢谢你。