Удаление строки Kendo Grid, не включающей ни транспорт, ни параметр Map - PullRequest
0 голосов
/ 31 августа 2018

Нажатие на сетку удаляет событие изменения источника данных пожарной сетки строки, но запускается paramatermap, и удаленный транспорт не выполняется. Я могу запустить ParameterMap путем вызова метода .sync в событии изменения, но это не передача удаленных данных, а только данных оставшихся строк.

 allUsersDataSource.fetch(function() {
    allUsers = allUsersDataSource.data();
  })

  var assignedUsersDataSource = new kendo.data.DataSource({
    // autoSync: true,
    transport: {
      read:{
        url: API_URL+"frank/getassignedusers/"+documentId,
        dataType: "json"
      },
      create: {
        type: "POST",
        url: API_URL+"frank/addusertodocument",
        dataType: "json"
      },
      update: {
        type: "POST",
        url: API_URL+"frank/editusertodocument",
        dataType: "json"
      },
      destroy:{
        type: "POST",
        url: API_URL+"frank/removeuserdocument",
        dataType: "json"
      },
      batch: true,
      parameterMap: function(data, operation) {
        console.log ("assignedUsersDataSource.parameterMap.!! data:", data);
        console.log ("assignedUsersDataSource.parameterMap.!! operation:", operation);
        if (operation === "destroy" ) {
          //..
        }
        if (operation === "create" && data.UserID) {
        //..
        }
      }
    },
    change: function(e) {
        console.log("assignedUsersDataSource.change: e.items  :: ", e.items  );
      if(e.action === "remove"){
        // assignedUsersDataSource.sync();
      }
      //edycja i wstawianie
      if(e.action === "itemchange"){
        // assignedUsersDataSource.sync();
      }
      // itemchange to zawiera
      if(e.action === "add"){
      //   assignedUsersDataSource.sync();
      }
    },
    pageSize: 4,
    schema: {
      model: {
        fields: {
          UserName: { editable: false, nullable: true },
          Surname: { editable: false, nullable: true },
          UserID: { field: "UserID", defaultValue: 1 },
          GroupName: { editable: false, nullable: true },
        }
      }
    }
  });

  var _grid = $("\#grid-single-user-groups").kendoGrid({
    dataSource: assignedUsersDataSource,
    filterable: true,
    scrollable: false,
    // toolbar: ["create", "save"],
    toolbar: ["create"],
    pageable: true,
    columns: [
      {
        field: "UserID", width: "100%",
        editor: userDropDownEditor,
        title: "Agent",
        template: function(userID) {
            for (var idx = 0, length = allUsers.length; idx < length; idx++) {
              if (allUsers[idx].UserNameID == userID.UserID) {
                return allUsers[idx].Login;
              }
            }
        }
      },
      { command: [ "destroy"], title: "&nbsp;", width: "250px" }
    ],
    editable: {mode: "incell"},
  });

  function userDropDownEditor(container, options) {
    $('<input data-bind="value:' + options.field + '"/>')
    .appendTo(container)
    .kendoDropDownList({
      dataTextField: "Login",
      dataValueField: "UserNameID",
      filter: "contains",
      dataSource: allUsersDataSource,
      valuePrimitive:true,
    })
  }
...