Kendo Grid编辑事件处理程序未更新行

问题描述 投票:0回答:1

[使用内联编辑将新项目添加到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>
kendo-ui telerik kendo-grid
1个回答
0
投票

通常,我在写问题时解决了这个问题。供以后参考,之所以未进行更新,是因为未从事件处理程序中返回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
}
© www.soinside.com 2019 - 2024. All rights reserved.