2015-10-07 2 views
0

ниже код создает узлы для кендо TreeView из контроллераКак установить флажок в дереве дерева 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" 
 
    } 
 
    } 
 
});

Я хочу, чтобы заполнить/проверить эти флажки с использованием идентификаторов, которые я получаю от моего контроллера

это мой контроллер способ действия

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; 
    } 

идентификаторы Я получаю от метода действия выше являются Идентификаторами из флажке Спасибо заранее ... :) Метод

ответ

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. Это проверило флажки из значений, возвращаемых контроллером.

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"); 
 

 
      } 
 
     } 
 
     } 
 
    } 
 
    }); 
 
}
Там может быть лучше или более эффективным способом, это работает для меня. Не стесняйтесь меня исправлять. Спасибо.