Обновление выпадающего меню Kendo In grid для любого клика по странице - PullRequest
0 голосов
/ 05 июля 2018

Мы обновили наш Kendo JS с 2.1008 до 2.516 в нашем приложении.

Я использую функцию редактирования выпадающего меню в сетке Kendo Grid.

В предыдущей версии (2.1008), когда мы щелкаем ячейку сетки, выпадающий список загружается и только при нажатии на новый элемент раскрывающегося списка запускается событие update сетки кендо.

В текущей обновленной версии (2.516), когда мы щелкаем по ячейке сетки, выпадающий список загружается, и когда вы щелкаете в любом месте страницы, кроме выпадающего, происходит событие update. то есть, несмотря на то, что я не изменил (не нажал) ни один элемент раскрывающегося списка, сетки обновляются, хотя он совпадает с предыдущим значением (отображается ненужное сообщение «Успешно обновлено»).

Ниже приведен код, который срабатывает при любом нажатии (в любом месте экрана), даже если раскрывающийся список не изменяется.

MyProject.Base.DataSource = new kendo.data.DataSource({
  serverPaging: true,
  serverSorting: true,
  pageSize: KendoBaseEntity.defaultPageSize,
  autoSync: true,
  schema: {
    data: "d.Response",
    total: "d.Total",
    model: {
      id: "MyId",
      fields: {
        MyId: {
          editable: false
        },
        MyParentColumn: {
          editable: false,
          type: "string"
        },
        MyColumn: {
          editable: isEditable,
          type: "string"
        }

      }
    }
  },
  requestEnd: function(e) {
    KendoBaseEntity.OnUpdateSuccess(e)
    var proxy = new MyProject.Utility.ServiceProxy("MySomeService1");
    proxy.invoke("GetMyData1", {
        "filter": MyProject.Base.SearchFilter
      },
      function(response) {
        if (response != null && response.length > 0) {
          $("#aMyServer").text('_' + response.length + '_ Servers Not Found');
          $("#aMyServer").show();
          $("#aMyServer").attr('data-info', response);
        } else {
          $('#txtRaMyServerListDialog').text('');
          $("#aMyServer").hide();
        }
      }
    );
  },
  requestStart: function(e) {
    if (KendoDisplayPreferences.preventajaxcall) {
      e.preventDefault();
    }
  },
  transport: {
    read: {
      url: "MyServices/" + MyProject.Base.ServiceName + ".asmx/" + MyProject.Base.SearchServiceMethod,
      contentType: "application/json; charset=utf-8",
      type: "POST"
    },
    update: {
      url: "MyServices/MyService.asmx/UpdateInGrid",
      contentType: "application/json; charset=utf-8",
      type: "POST"
    },
    parameterMap: function(data, operation) {
      if (data.page != null) {
        MyProject.Base.SearchFilter.Options.Page = data.page > 0 ?
          data.page : MyProject.Base.SearchFilter.Options.Page;
      }
      if (data.take != null) {
        MyProject.Base.SearchFilter.Options.RecordsPerPage = data.take > 0 ?
          data.take : MyProject.Base.SearchFilter.Options.RecordsPerPage;
      }
      if (data.sort != null && data.sort.length > 0) {
        var sortarray = data.sort;
        var sortinput = '';
        if (sortarray.length > 1) {
          $(sortarray).each(function(index, value) {
            var colName = value.field;
            var order = (value.dir == "asc") ?
              "ascending" :
              "descending";

            var resultarray = MyProject.Base.ResultsColumnModel;
            $(resultarray).each(function(index, ele) {
              if (ele != null) {
                if (ele.field != null && ele.field == colName) {
                  colName = ele.attributes.sortname;
                  sortinput = sortinput + colName + ' ' + order + ';';
                }
              }

            });
          });
          MyProject.Base.SearchFilter.Options.SortColumn = null;
          MyProject.Base.SearchFilter.Options.MultipleSort = sortinput;
        } else {
          var columname = data.sort[0].field;
          columname = columname == "DefaultB" ? "Default B" : columname;
          columname = columname == "DefaultA" ? "Default A" : columname;
          //Defect 2443
          if (columname == "StartDate-EndDate" || columname == "Default A" || columname == "Default B") {
            MyProject.Base.SearchFilter.Options.MultipleSort = null;
            MyProject.Base.SearchFilter.Options.SortColumn = columname;
            MyProject.Base.SearchFilter.Options.SortOrder = data.sort[0].dir;
          } else {
            var grid = $("#ResultsGrid").data("kendoGrid");
            var columns = grid.columns;
            $(columns).each(function(index, value) {
              if (value.field != null && value.field == columname) {
                MyProject.Base.SearchFilter.Options.MultipleSort = null;
                MyProject.Base.SearchFilter.Options.SortColumn = value.attributes.sortname;
              }
            });
            MyProject.Base.SearchFilter.Options.SortOrder = data.sort[0].dir;
          }
        }
      } else {
        if (somecondition) {
          MyProject.Base.SearchFilter.Options.SortColumn = null;
          MyProject.Base.SearchFilter.Options.MultipleSort = 'Server.ServerName ascending;DEPLOYMENT_SEQUENCE ascending';
        }
      }
      if (operation == "read") {

        if (MyProject.Base.SearchFilter.Options.SortColumn == 'ServerName') {
          MyProject.Base.SearchFilter.Options.SortColumn = 'Server.ServerName';
        }
        var inputvar = {
          'filter': MyProject.Base.SearchFilter
        };
        return JSON2.stringify(inputvar)
      }
      if (operation == "update") {
        debugger
        if (data != null) {
          var myId = data.MyId;
          var updateValue = data[KendoDeployment.EditFieldName];
          switch (KendoDeployment.EditFieldName) {
            case "MyColumnAttributes":
              updateValue = data[KendoDeployment.EditFieldName].UserId;
              KendoDeployment.EditFieldName = "MyColumn";
              break;

            case "MyColumn":
              updateValue = data["MyColumnAttributes"].UserId;
              KendoDeployment.EditFieldName = "MyColumn";
          };
          return JSON2.stringify({
            'MyId': myId,
            "updateValue": updateValue,
            "updateField": KendoDeployment.EditFieldName
          });
        }
      }
    }
  }
})

Код в вышеприведенном скрипте, который вызывается для любого события клика:

if (operation == "update") {
  debugger
  if (data != null) {
    var myId = data.MyId;
    var updateValue = data[KendoDeployment.EditFieldName];
    switch (KendoDeployment.EditFieldName) {
      case "MyColumnAttributes":
        updateValue = data[KendoDeployment.EditFieldName].UserId;
        KendoDeployment.EditFieldName = "MyColumn";
        break;

      case "MyColumn":
        updateValue = data["MyColumnAttributes"].UserId;
        KendoDeployment.EditFieldName = "MyColumn";
    };
    return JSON2.stringify({
      'MyId': myId,
      "updateValue": updateValue,
      "updateField": KendoDeployment.EditFieldName
    });
  }
}

Может кто-нибудь указать, где я должен внести изменения, чтобы решить эту проблему?

...