[使用内联编辑将新项目添加到Kendo网格时,ContractID
数据源将由选定的OrgID
过滤。添加一行后,OrgID
列将不再可编辑(使用isOrgEditable()
进行设置),但ContractID
则是可编辑的。不幸的是,级联然后无法用于编辑,并且ContractID
的数据源未过滤。
为了解决该问题,我订阅了编辑事件(data-edit="setContractsDataSource"
)并手动过滤数据源。可以,但是“更新”按钮什么也不做,并且编辑丢失。
<div id="grid">
<div class="k-content wide">
<div>
<div data-role="grid"
data-editable="inline"
data-edit="setContractsDataSource"
data-toolbar="[{ name: 'create', text: 'Add Item' }]"
data-columns='[
{ field: "OrgID", title: "Company", editable: isOrgEditable, editor: orgDropDownEditor, template: "#: lookupForOrg(organisationID) #" },
{ field: "ContractID", title: "Contract", editor: contractsDropDownEditor, template: "#: lookupForContract(ContractID) #" },
{ command: ["edit", "destroy"], width: "220px" }
]'
data-sortable="true"
data-pageable="true"
data-filterable="true"
data-bind="source: items"></div>
</div>
</div>
</div>
通常,我在写问题时解决了这个问题。供以后参考,之所以未进行更新,是因为未从事件处理程序中返回true
:
function setContractsDataSource(e) {
let orgID = e.model ? e.model.OrgID : this.dataItem().OrgID;
if (orgID) {
$("#contracts").data("kendoDropDownList").setDataSource(contractsData.filter(elt => elt.ContractorID == orgID));
}
return true; // fixed it
}