首页 > 解决方案 > 剑道在网格下拉菜单中更新页面上的任何点击

问题描述

我们已经在我们的应用程序中将我们的 Kendo JS 从 2.1008 升级到了 2.516。

我正在使用剑道网格的网格下拉编辑功能。

在以前的版本(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
    });
  }
}

有人可以指出我必须在哪里进行更改以解决此问题吗?

标签: javascriptjquerykendo-uikendo-grid

解决方案


推荐阅读