Мне нужна небольшая помощь по KendoUI Treeview. Я работаю над KendoUI Treeview Code. Здесь идет FactorTypes как родитель и Factors как дети. Поэтому, если я выбрал FactorType, будут выбраны все факторы под этим конкретным FactorType. И у меня есть Все в качестве родительского узла для FactorTypes, установив флажок Все, будут выбраны все Факторы во всех Факторных типах.
Однако у меня есть ситуация, когда я могу использовать флажок Все, и First FactorType работает нормально, если я использую второй или последующие FactorTypes при выборе, они работают должным образом. Вот код и скриншоты.
HTML Код:
<div class="form-group row">
<label for="event_type_id" class="col-sm-2 col-form-label" style="font-weight:bold">
Factor Types:
</label>
<div class="col-sm-10">
<div id="treeview-section" class="header k-content">
<ul id="treeview">
<li data-expanded="true">
<span class="k-sprite folder"></span>
<input type="checkbox" name="select_all" class="k-checkbox" id="select_all" />
<span class="k-sprite folder"></span>All
<ul class="collapse" data-toggle="collapse" id="child_treeview">
<cfloop query="FactorTypes">
<li id="list_treeview" data-toggle="collapse" data-expanded="true">
<input type="checkbox" name="factor_type_id" class="k-checkbox" id="factor_type_id" />
<span class="k-sprite folder"></span>#FactorTypes.factor_type_name#
<cfquery dbtype="query" name="ListOfFactors">
select * from Factors where factor_type_code = '#FactorTypes.factor_type_code#'
</cfquery>
<cfloop query="ListOfFactors">
<ul>
<li>
<input type="checkbox" name="factor_id" value="#ListOfFactors.factor_id#" class="k-checkbox" id="factor_id" />
<span class="k-sprite"></span>#ListOfFactors.factor_name#
</li>
</ul>
</cfloop>
</li>
</cfloop>
</ul>
</li>
</ul>
</div>
</div>
</div>
jQuery Код:
$("#treeview").kendoTreeView({
checkboxes: {checkChildren: true},
check: onCheck
});
// show checked node IDs on datasource change
function onCheck() {
var checkedNodes = [], treeView = $("#treeview").data("kendoTreeView"), message;
checkedNodeIds(treeView.dataSource.view(), checkedNodes);
};
// function that gathers IDs of checked nodes
function checkedNodeIds(nodes, checkedNodes){
for(var i = 0; i < nodes.length; i++){
if(nodes[i].checked){
checkedNodes.push(nodes[i].id);
}
if(nodes[i].hasChildren){
checkedNodeIds(nodes[i].children.view(), checkedNodes);
}
}
};
Вот выбор First FactorType, который выбирает все факторы под FactorType
В то время как при втором выборе FactorType факторы не выбираются. Это проблема. Я хочу, чтобы это работало как First FactorType Selection.
Любая помощь приветствуется. STAY HOME STAY SAFE!
Я добавляю больше информации в исходное сообщение. Как я могу изменить код к тому же самому в примере, приведенном здесь в этой статье https://demos.telerik.com/kendo-ui/treeview/checkboxes
Но при этом мне нужно получить данные из источника данных, которые я могу получить через услуги отдыха. Я могу сделать это в cf c, который мне нужен, чтобы установить sh родительско-дочерние отношения между FactorTypes и Factors like и массивом. Я пробовал это, но это не работает. Вот код для этого.
<cfcomponent rest="true">
<cfheader name="Access-Control-Allow-Origin" value="mesdev.intranet.cnb"/>
<cfheader name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE"/>
<cfheader name="Access-Control-Allow-Headers" value="Content-Type" />
<cffunction name="FactorTypeTree" access="remote" returntype="string" returnformat="plain" httpmethod="GET">
<cfinvoke component="e.qhse.sea.api.FactorType" method="FactorTypeTreeSelect" returnvariable="ftResult"></cfinvoke>
<cfset aResults = arrayNew(1)>
<cfloop query="ftResult">
<cfset ftResult = structNew()>
<cfset ftResult["factor_type_id"] = factor_type_id>
<cfset ftResult["factor_type_name"] = factor_type_name>
<cfset ftResult["factors"] = structNew()>
<cfinvoke component="e.qhse.sea.api.Factor" method="FactorList" factor_type_id="#factor_type_id#" returnvariable="fResult"></cfinvoke>
<cfloop query="fResult">
<cfset fResult["factor_id"] = factor_id>
<cfset fResult["factor_name"] = factor_name>
<cfset arrayAppend(ftResult["factors"],fResult)>
</cfloop>
<cfset arrayAppend(aResults,ftResult)>
</cfloop>
<cfreturn SerializeJSON(aResults)>
</cffunction>
</cfcomponent>