Kendo ui 剑道用户界面-数据源。使用mvvm将参数传递给服务器

Kendo ui 剑道用户界面-数据源。使用mvvm将参数传递给服务器,kendo-ui,kendo-datasource,kendo-mvvm,Kendo Ui,Kendo Datasource,Kendo Mvvm,我无法正确使用数据源 我的目标:创建用于过滤剑道网格(服务器端过滤器)的外部小部件 我设法使它工作,但这是一种变通办法,我正在寻找正确的方法 filterGrid函数完成了所有工作,但看起来不太对劲, 我想让parametermap函数完成所有的工作,但我想不出来。 请告知 这就是我的视图模型的样子(我省略了不太重要的部分): 我的标记如下所示:(同样,只有重要部分) מספר עובד: מספר אירוע: מספר מפעל: תאריך העברה לחילן: ת

我无法正确使用数据源

我的目标:创建用于过滤剑道网格(服务器端过滤器)的外部小部件

我设法使它工作,但这是一种变通办法,我正在寻找正确的方法

filterGrid函数完成了所有工作,但看起来不太对劲, 我想让parametermap函数完成所有的工作,但我想不出来。 请告知

这就是我的视图模型的样子(我省略了不太重要的部分):

我的标记如下所示:(同样,只有重要部分)

  • מספר עובד:
  • מספר אירוע:
  • מספר מפעל:
  • תאריך העברה לחילן:
  • תאריך עדכון:
  • סטטוס אירוע:
  • ממשק:
  • סנן

我想我找到了答案,可能是我输入了错别字什么的。 我在parametermap函数而不是filterGrid函数中创建了数据对象。我刚刚用viewModel替换了“this”。我仍然认为有更好的方法来处理它,但目前它正好为我服务

var viewModel = kendo.observable({
       selectedInterface: null,
       selectedStatus: null,
       toHilanDate: new Date(),
       updateDate: new Date(),
       employeeId: null,
       factoryId: null,
       eventId:null,
       employees: new kendo.data.DataSource({
            transport: {
                parameterMap: function (data, type) {
                    return { criteria: data };//for the mvc controller
                },
                read: {
                    url: "tohilan/Employees",
                    type: "post",
                    data: {}
                }
            }
        }),
        filterGrid: function () {
            var data = {
                SelectedInterface: this.selectedInterface ? this.selectedInterface.Id:null,
                SelectedStatus: this.selectedStatus? this.selectedStatus.Key:null,
                ToHilanDate: kendo.toString(kendo.parseDate(this.toHilanDate), "d"),
                UpdateDate: kendo.toString(kendo.parseDate(this.updateDate), "d"),
                EmployeeId: this.get("employeeId"),
                FactoryId: this.get("factoryId"),
                EventId: this.eventId,
            };
            //set new data into datasource
           $('#employeeGrid').data('kendoGrid').dataSource.transport.options.read.data = data;
            //refresh grid
            $('#employeeGrid').data('kendoGrid').dataSource.read();
            $('#employeeGrid').data('kendoGrid').refresh();
        }
});
      kendo.bind($("#employees-view"), viewModel);
<ul>
            <li>
                <label for="employeeId">מספר עובד:</label>
                <input type="number" id="employeeId" data-role="maskedtextbox" data-bind="value:employeeId"/>
            </li>
            <li>
                <label for="eventId">מספר אירוע:</label>
                <input type="number" id="eventId" data-role="maskedtextbox" data-bind="value:eventId"/>
            </li>
            <li>
                <label for="factoryId">מספר מפעל:</label>
                <input type="number" id="factoryId" data-role="maskedtextbox" data-bind="value:factoryId"/>
            </li>
            <li>
                <label for="toHilanDate">תאריך העברה לחילן:</label>
                <input type="date" id="toHilanDate" data-role="datepicker" data-bind="value:toHilanDate" />
            </li>
            <li>
                <label for="updateDate">תאריך עדכון:</label>
                <input type="date" id="updateDate" data-role="datepicker" data-bind="value:updateDate" />
            </li>
            <li>
                <label for="event-status">סטטוס אירוע:</label>
                <select id="event-status" data-role="dropdownlist" data-bind="value: selectedStatus, source: statusList" data-text-field="Value" data-value-field="Key" data-option-label=" "></select>
            </li>
            <li>
                <label for="interface">ממשק:</label>
                <select id="interface" data-role="dropdownlist" data-bind="value: selectedInterface, source: interfaceList" data-text-field="Description" data-value-field="Id" data-option-label=" "></select>
            </li>
            <li>
                <button type="submit" data-role="button" data-bind="events: {click:filterGrid}">סנן</button>
            </li>
        </ul>