如何使用从控制器传递的值在剑道树视图中检查复选框

本文关键字:视图 复选框 检查 何使用 控制器 | 更新日期: 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");
          }
        }
      }
    }
  });
}
也许有更好或更有效的方法,这对我来说很有效。请随时纠正我。谢谢你。