在 Kendo UI GRID 中实施批量更新不起作用

Implementing Batch Update in Kendo UI GRID not work

在尝试执行批量更新时,我无法将 post 值传递给 MVC WEB API 控制器,我也无法在 mu PUT 控制器中获取记录 ID。 我已经访问了一些关于相同问题的链接,但没有找到解决方案。

  $(document).ready(function () {
      debugger;
      var webapiUrl = (My webapi);

      dataSource = new kendo.data.DataSource({
                        type: "json",
                        transport: {
                            read:  {
                                url: webapiUrl + api/GetProductsByShipID/1",
                                contentType: "application/json",

                            },
                            update: {
                                url: webapiUrl + api/OpportunityProducts/1",

                                contentType: "application/json",
                                type: "PUT"
                            },
                            destroy: {
                                url: webapiUrl + /api/OpportunityProducts/",
                                contentType: "application/json",
                                type: "DELETE"
                            },
                            create: {
                                url: webapiUrl + /api/OpportunityProducts/",
                                contentType: "application/json",
                                type: "POST"
                            },
                            parameterMap: function (options, operation) {
                                if (operation !== "read") {
                                    return options;
                                }
                            }

                        },
                        batch: true,
                        pageSize: 10,
                        schema: {
                            model: {
                                id: "ID",
                                fields: {
                                    ID: { editable: false, nullable: true },
                                    ProductDesc: { type: "string" },
                                    Quantity: {type: "number"},
                                    UnitPrice: { type: "number"}
                                }
                            }

                    });

                $("#grid").kendoGrid({
                    dataSource: dataSource,
                    navigatable: true,
                    pageable: true,
                    toolbar: ["create", "save", "cancel"],
                    columns: [
                        "ProductName",
                        { field: "ProductDesc", title: "Product Desc"},
                        { field: "Quantity", title: "Quantity" },
                        { field: "UnitPrice", width: 120 },
                        { command: "destroy", title: " ", width:150 }],
                    editable: true
                });
            });
        </script>

经过一些解决方法,深夜我能够修改我的 kendo 网格的 parameterMap 部分,这使我获得了预期的输出。

这就是我更新 parameterMap 部分的方式...

上一个

parameterMap: function (options, operation) {
                        if (operation !== "read") {
                            return options;
                        }
                    }

已更新

 parameterMap: function (options, operation) {
                            debugger;
                            if (operation !== "read" && options.models) {
                    var webapiUrl = (my webapi);
                      var i = 0;
                      for (i = 0; i < options.models.length; i++) {
                          $.ajax({
                              cache: false,
                              async: true,
                              type: "PUT",
                              url: webapiUrl + "/api/OpportunityProducts/" + options.models[i].Id,
                          data: {

                           ID: options.models[i].ID,
                           ProductDesc: options.models[i].ProductDesc,
                                  Quantity: options.models[i].Quantity
                           },

                              success: function (data) {

                              },

                              error: function (jqXHR, exception) {

                                  alert(exception);

                              }

                          });

                      }