2014-02-07 48 views
0

我有一个Kendo网格,我在时间输入应用程序中使用。时间条目涵盖了2周的支付期限,所以我有14列,用户可以输入给定任务每天工作的小时数。我还有任务的专栏,加班指标,每周总计和付款期间总计。对于输入单元格的时间,我正在使用数字文本框。每个任务都是网格中的一行。我将网格设置为“navigatable:true”,因此用户可以从一个单元格切换到下一个单元格。这很有用,直到用户在单元格中输入时间。当他们在输入或更改时间单元格中的值之后标出时,它们将被引发到网格的第一行和第一个单元格。我试过各种各样的东西来获取当前单元格,并强制它移动到选项卡上的下一个单元格,但没有任何工作。我总是被带到网格中的第一个单元格。在单元格内使用数字文本框时,这是Kendo网格的一个已知问题吗?或者我在这里做错了什么?任何输入将不胜感激。Kendo grid with numerictextbox tab out issues

这里是我的代码: GetTimeSheet:函数(){

  function editNumberWithoutSpinners(container, options) { 
      $('<input data-text-field="' + options.field + '" ' + 
        'data-value-field="' + options.field + '" ' + 
        'data-bind="value:' + options.field + '" ' + 
        'data-format="' + options.format + '"/>') 
        .appendTo(container) 
        .kendoNumericTextBox({ 
         min: 0, 
         max: 25, 
         spinners: false 
        }); 
      //Select text on focus 
      $('.k-input').on('focus', function() { var input = $(this); setTimeout(function() { input.select(); }); }); 

     } 

     //Employee grid 
     var timeSheetGrid = $("#Time-Sheet-grid").empty().kendoGrid({ 
      autoBind: true, 
      dataSource: { 
       serverPaging: true, 
       serverSorting: true, 
       serverFiltering: true, 
       transport: { 
        read: { 
         url: "/TimeSheet/GetTimeSheetSummary", 
         contentType: "application/json; charset=utf-8", 
         type: 'POST' 
        }, 
        parameterMap: function (data, operation) { 
         return kendo.stringify({ 
          employeeNum: JARS.TimeSheet.employeeNumHold, 
          payPeriod: JARS.TimeSheet.payPeriodHold 
         }); 
        } 
       }, 
       schema: { 
        data: "TimesheetSummaryList", 
        model: { 
         id: "EmployeeNum", 
         fields: { 
          EmployeeNum: { type: "integer", hidden: true }, 
          ErrorMessage: { type: "string", editable: false }, 
          FullName: { type: "string", editable: false }, 
          RCN: { type: "string", editable: false }, 
          OtAllowedInd: { type: "string", editable: false }, 
          PayPeriodDate: { type: "date", editable: false }, 
          HoursDay1: { type: "double", editable: false }, 
          HoursDay2: { type: "double", editable: false }, 
          HoursDay3: { type: "double", editable: false }, 
          HoursDay4: { type: "double", editable: false }, 
          HoursDay5: { type: "double", editable: false }, 
          HoursDay6: { type: "double", editable: false }, 
          HoursDay7: { type: "double", editable: false }, 
          Week1Total: { type: "double", editable: false }, 
          HoursDay8: { type: "double", editable: false }, 
          HoursDay9: { type: "double", editable: false }, 
          HoursDay10: { type: "double", editable: false }, 
          HoursDay11: { type: "double", editable: false }, 
          HoursDay12: { type: "double", editable: false }, 
          HoursDay13: { type: "double", editable: false }, 
          HoursDay14: { type: "double", editable: false }, 
          Week2Total: { type: "double", editable: false }, 
          PayPeriodTotal: { type: "double", editable: false }, 
          OTHoursDay1: { type: "double", editable: false }, 
          OTHoursDay2: { type: "double", editable: false }, 
          OTHoursDay3: { type: "double", editable: false }, 
          OTHoursDay4: { type: "double", editable: false }, 
          OTHoursDay5: { type: "double", editable: false }, 
          OTHoursDay6: { type: "double", editable: false }, 
          OTHoursDay7: { type: "double", editable: false }, 
          OTWeek1Total: { type: "double", editable: false }, 
          OTHoursDay8: { type: "double", editable: false }, 
          OTHoursDay9: { type: "double", editable: false }, 
          OTHoursDay10: { type: "double", editable: false }, 
          OTHoursDay11: { type: "double", editable: false }, 
          OTHoursDay12: { type: "double", editable: false }, 
          OTHoursDay13: { type: "double", editable: false }, 
          OTHoursDay14: { type: "double", editable: false }, 
          OTWeek2Total: { type: "double", editable: false }, 
          OTPayPeriodTotal: { type: "double", editable: false } 
         } 
        }, 
        total: function (response) { 
         return $(response.TimesheetList).length 
        } 
       } 
      }, 
      pageable: false, 
      sortable: false, 
      filterable: false, 
      navigatable: true, 
      batch: true, 
      detailInit: detailInit, 
      dataBound: function() { 
       if (JARS.TimeSheet.modeHold == "I") { 
        this.expandRow(this.tbody.find("tr.k-master-row").first()); 
       } 
      }, 

      columns: [ 
       { field: "EmployeeNum", title: "", hidden: true}, 
       { 
        field: "FullName", title: "Timesheet for", width: "200px", template: function (data) { 
         var fieldData = data.FullName; 
         if (data.ErrorMessage != "") { 
          fieldData += "<br/><span class='OT_data'>"; 
          fieldData += data.ErrorMessage.replace(/\n/g, "<br/>"); 
          fieldData += "</span>"; 
         } 
         return fieldData; 
        } 
       }, 
       { title: "", template: "RT<br/><span class='OT_data'>OT</span>", width: "55px" }, 
       { field: "HoursDay1", headerTemplate: '<span>Sat<br/>' + getDay(1) + '</span>', template: "#:data.HoursDay1# <br/><span class='OT_data'> #:data.OTHoursDay1#</span>", width: "55px" }, 
       { field: "HoursDay2", headerTemplate: '<span>Sun<br/>' + getDay(2) + '</span>' , template: "#:data.HoursDay2# <br/><span class='OT_data'> #:data.OTHoursDay2#</span>", width: "55px" }, 
       { field: "HoursDay3", headerTemplate: '<span>Mon<br/>' + getDay(3) + '</span>', template: "#:data.HoursDay3# <br/><span class='OT_data'> #:data.OTHoursDay3#</span>", width: "55px" }, 
       { field: "HoursDay4", headerTemplate: '<span>Tue<br/>' + getDay(4) + '</span>', template: "#:data.HoursDay4# <br/><span class='OT_data'> #:data.OTHoursDay4#</span>", width: "55px" }, 
       { field: "HoursDay5", headerTemplate: '<span>Wed<br/>' + getDay(5) + '</span>', template: "#:data.HoursDay5# <br/><span class='OT_data'> #:data.OTHoursDay5#</span>", width: "55px" }, 
       { field: "HoursDay6", headerTemplate: '<span>Thur<br/>' + getDay(6) + '</span>', template: "#:data.HoursDay6# <br/><span class='OT_data'> #:data.OTHoursDay6#</span>", width: "55px" }, 
       { field: "HoursDay7", headerTemplate: '<span>Fri<br/>' + getDay(7) + '</span>', template: "#:data.HoursDay7# <br/><span class='OT_data'> #:data.OTHoursDay7#</span>", width: "55px" }, 
       { headerTemplate: '<span>Week<br/>&nbsp;&nbsp;1<br/>Total</span>', template: "#:data.Week1Total# <br/><span class='OT_data'> #:data.OTWeek1Total#</span>", width: "55px" }, 
       { field: "HoursDay8", headerTemplate: '<span>Sat<br/>' + getDay(8) + '</span>', template: "#:data.HoursDay8# <br/><span class='OT_data'> #:data.OTHoursDay8#</span>", width: "55px" }, 
       { field: "HoursDay9", headerTemplate: '<span>Sun<br/>' + getDay(9) + '</span>', template: "#:data.HoursDay9# <br/><span class='OT_data'> #:data.OTHoursDay9#</span>", width: "55px" }, 
       { field: "HoursDay10", headerTemplate: '<span>Mon<br/>' + getDay(10) + '</span>', template: "#:data.HoursDay10# <br/><span class='OT_data'> #:data.OTHoursDay10#</span>", width: "55px" }, 
       { field: "HoursDay11", headerTemplate: '<span>Tue<br/>' + getDay(11) + '</span>', template: "#:data.HoursDay11# <br/><span class='OT_data'> #:data.OTHoursDay11#</span>", width: "55px" }, 
       { field: "HoursDay12", headerTemplate: '<span>Wed<br/>' + getDay(12) + '</span>', template: "#:data.HoursDay12# <br/><span class='OT_data'> #:data.OTHoursDay12#</span>", width: "55px" }, 
       { field: "HoursDay13", headerTemplate: '<span>Thur<br/>' + getDay(13) + '</span>', template: "#:data.HoursDay13# <br/><span class='OT_data'> #:data.OTHoursDay13#</span>", width: "55px" }, 
       { field: "HoursDay14", headerTemplate: '<span>Fri<br/>' + getDay(14) + '</span>', template: "#:data.HoursDay14# <br/><span class='OT_data'> #:data.OTHoursDay14#</span>", width: "55px" }, 
       { field: "Week2Total", headerTemplate: '<span>Week<br/>&nbsp;&nbsp;2<br/>Total</span>', template: "#:data.Week2Total# <br/><span class='OT_data'> #:data.OTWeek2Total#</span>", width: "55px" }, 
       { field: "PayPeriodTotal", title: "Total", template: "#:data.PayPeriodTotal# <br/><span class='OT_data'> #:data.OTPayPeriodTotal#</span>", width: "55px" } 

      ], 
      resizable: true, 
     }); 

     //Time Records 
     function detailInit(e) { 
      childTimesheetGrid = $("<div/>").appendTo(e.detailCell).kendoGrid({ 
       dataSource: { 
        serverPaging: false, 
        serverSorting: false, 
        serverFiltering: false, 
        transport: { 
         read: { 
          url: "/TimeSheet/GetTimeSheets", 
          contentType: "application/json; charset=utf-8", 
          type: 'POST' 
         }, 
         update: { 
          url: "/TimeSheet/UpdateTimesheet", 
          contentType: "application/json; charset=utf-8", 
          type: 'POST', 
          complete: function (e) { 
           $("#Time-Sheet-grid").data("kendoGrid").dataSource.read(); 
          } 
         }, 
         destroy: { 
          url: "/TimeSheet/DeleteTimesheet", 
          contentType: "application/json; charset=utf-8", 
          type: 'POST', 
          complete: function (e) { 
           $("#Time-Sheet-grid").data("kendoGrid").dataSource.read(); 
          } 
         }, 
         create: { 
          url: "/TimeSheet/CreateTimesheet", 
          contentType: "application/json; charset=utf-8", 
          type: 'POST', 
          complete: function (e) { 
           $("#Time-Sheet-grid").data("kendoGrid").dataSource.read(); 
          } 
         }, 
         parameterMap: function(data, operation) { 
          if (operation == "read") { 
           return kendo.stringify({ employeeNum: e.data.EmployeeNum, payPeriod: e.data.PayPeriodDate }); 
          } 
          else { 
           if (operation !== "destroy") { 
            return kendo.stringify({ model: data }); 
           } 
           return kendo.stringify({ id: data.TimesheetId }); 
          } 

         } 
        }, 
        schema: { 
         data: "TimesheetList", 
         model: { 
          id: "TimesheetId", 
          fields: { 
           Activity: { type: "string", editable: false }, 
           ActvyComments: { type: "string", editable: true }, 
           ActvyLongDesc: { type: "string", editable: false }, 
           OvertimeInd: { type: "string", editable: false }, 
           HoursDay1: { type: "number", editable: true }, 
           HoursDay2: { type: "number", editable: true }, 
           HoursDay3: { type: "number", editable: true }, 
           HoursDay4: { type: "number", editable: true }, 
           HoursDay5: { type: "number", editable: true }, 
           HoursDay6: { type: "number", editable: true }, 
           HoursDay7: { type: "number", editable: true }, 
           HoursDay8: { type: "number", editable: true }, 
           HoursDay9: { type: "number", editable: true }, 
           HoursDay10: { type: "number", editable: true }, 
           HoursDay11: { type: "number", editable: true }, 
           HoursDay12: { type: "number", editable: true }, 
           HoursDay13: { type: "number", editable: true }, 
           HoursDay14: { type: "number", editable: true }, 
           SpreadInd: { type: "string", editable: false }, 
           TimesheetId: { type: "integer", editable: false, nullable: true }, 
           WorkId: { type: "integer", editable: false }, 
           RCN: { type: "string", editable: false }, 
           OtAllowedInd: { type: "string", editable: false }, 
           EmployeeNum: { type: "integer", editable: false }, 
           FullName: { type: "string", editable: false }, 
           PayPeriodDate: { type: "date", editable: false }, 
           Week1Total: {type: "double", editable: false }, 
           Week2Total: { type: "double", editable: false }, 
           PayPeriodTotal: { type: "double", editable: false } 
          } 
         }, 
         total: function (response) { 
          return $(response.TimesheetList).length 
         } 
        }, 
        group: { 
         field: "FullName", template: "Timesheet for", aggregates: [ 
          { field: "HoursDay1", aggregate: "sum" }, 
          { field: "HoursDay2", aggregate: "sum" }, 
          { field: "HoursDay3", aggregate: "sum" }, 
          { field: "HoursDay4", aggregate: "sum" }, 
          { field: "HoursDay5", aggregate: "sum" }, 
          { field: "HoursDay6", aggregate: "sum" }, 
          { field: "HoursDay7", aggregate: "sum" }, 
          { field: "HoursDay8", aggregate: "sum" }, 
          { field: "HoursDay9", aggregate: "sum" }, 
          { field: "HoursDay10", aggregate: "sum" }, 
          { field: "HoursDay11", aggregate: "sum" }, 
          { field: "HoursDay12", aggregate: "sum" }, 
          { field: "HoursDay13", aggregate: "sum" }, 
          { field: "HoursDay14", aggregate: "sum" }, 
          { field: "Week1Total", aggregate: "sum" }, 
          { field: "Week2Total", aggregate: "sum" }, 
          { field: "PayPeriodTotal", aggregate: "sum" } 
         ] 
        }, 
        aggregate: [{ field: "HoursDay1", aggregate: "sum" }, 
          { field: "HoursDay2", aggregate: "sum" }, 
          { field: "HoursDay3", aggregate: "sum" }, 
          { field: "HoursDay4", aggregate: "sum" }, 
          { field: "HoursDay5", aggregate: "sum" }, 
          { field: "HoursDay6", aggregate: "sum" }, 
          { field: "HoursDay7", aggregate: "sum" }, 
          { field: "HoursDay8", aggregate: "sum" }, 
          { field: "HoursDay9", aggregate: "sum" }, 
          { field: "HoursDay10", aggregate: "sum" }, 
          { field: "HoursDay11", aggregate: "sum" }, 
          { field: "HoursDay12", aggregate: "sum" }, 
          { field: "HoursDay13", aggregate: "sum" }, 
          { field: "HoursDay14", aggregate: "sum" }, 
          { field: "Week1Total", aggregate: "sum" }, 
          { field: "Week2Total", aggregate: "sum" }, 
          { field: "PayPeriodTotal", aggregate: "sum" } 
        ] 
       }, 
       batch: true, 
       pageable: false, 
       sortable: true, 
       filterable: false, 
       navigatable: true, 
       columns: [ 
        { field: "Activity", title: "Activity", width: 190, attributes: { tip: "#:data.ActvyLongDesc#" } }, 
        { field: "ActvyComments", title: "Comments", width: 70 }, 
        { title: "OT", width: 35, template: "#:data.OvertimeInd=='Y'?'OT':''#" }, 
        { field: "HoursDay1", editor: editNumberWithoutSpinners, headerTemplate: '<span>Sat<br/>' + getDay(1) + '</span>', width: 35, template: "#:data.HoursDay1==0?'':data.HoursDay1#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay2", editor: editNumberWithoutSpinners, headerTemplate: '<span>Sun<br/>' + getDay(2) + '</span>', width: 35, template: "#:data.HoursDay2==0?'':data.HoursDay2#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay3", editor: editNumberWithoutSpinners, headerTemplate: '<span>Mon<br/>' + getDay(3) + '</span>', width: 35, template: "#:data.HoursDay3==0?'':data.HoursDay3#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay4", editor: editNumberWithoutSpinners, headerTemplate: '<span>Tue<br/>' + getDay(4) + '</span>', width: 35, template: "#:data.HoursDay4==0?'':data.HoursDay4#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay5", editor: editNumberWithoutSpinners, headerTemplate: '<span>Wed<br/>' + getDay(5) + '</span>', width: 35, template: "#:data.HoursDay5==0?'':data.HoursDay5#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay6", editor: editNumberWithoutSpinners, headerTemplate: '<span>Thur<br/>' + getDay(6) + '</span>', width: 35, template: "#:data.HoursDay6==0?'':data.HoursDay6#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay7", editor: editNumberWithoutSpinners, headerTemplate: '<span>Fri<br/>' + getDay(7) + '</span>', width: 35, template: "#:data.HoursDay7==0?'':data.HoursDay7#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "Week1Total", headerTemplate: '<span>Week<br/>&nbsp;&nbsp;1<br/>Total</span>', width: 50, template: "#= HoursDay1 + HoursDay2 + HoursDay3 + HoursDay4 + HoursDay5 + HoursDay6 + HoursDay7#", 
        groupFooterTemplate: function (data) { 
         return (data["HoursDay1"].sum + data["HoursDay2"].sum + data["HoursDay3"].sum + data["HoursDay4"].sum + data["HoursDay5"].sum + data["HoursDay6"].sum + data["HoursDay7"].sum); 
        } 
        }, 
        { field: "HoursDay8", editor: editNumberWithoutSpinners, headerTemplate: '<span>Sat<br/>' + getDay(8) + '</span>', width: 35, template: "#:data.HoursDay8==0?'':data.HoursDay8#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay9", editor: editNumberWithoutSpinners, headerTemplate: '<span>Sun<br/>' + getDay(9) + '</span>', width: 35, template: "#:data.HoursDay9==0?'':data.HoursDay9#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay10", editor: editNumberWithoutSpinners, headerTemplate: '<span>Mon<br/>' + getDay(10) + '</span>', width: 35, template: "#:data.HoursDay10==0?'':data.HoursDay10#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay11", editor: editNumberWithoutSpinners, headerTemplate: '<span>Tue<br/>' + getDay(11) + '</span>', width: 35, template: "#:data.HoursDay11==0?'':data.HoursDay11#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay12", editor: editNumberWithoutSpinners, headerTemplate: '<span>Wed<br/>' + getDay(12) + '</span>', width: 35, template: "#:data.HoursDay12==0?'':data.HoursDay12#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay13", editor: editNumberWithoutSpinners, headerTemplate: '<span>Thur<br/>' + getDay(13) + '</span>', width: 35, template: "#:data.HoursDay13==0?'':data.HoursDay13#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        { field: "HoursDay14", editor: editNumberWithoutSpinners, headerTemplate: '<span>Fri<br/>' + getDay(14) + '</span>', width: 35, template: "#:data.HoursDay14==0?'':data.HoursDay14#", groupFooterTemplate: "#=sum#", attributes: { class: "editable-cell" } }, 
        {field: "Week2Total", headerTemplate: '<span>Week<br/>&nbsp;&nbsp;2<br/>Total</span>', width: 50, template: "#= HoursDay8 + HoursDay9 + HoursDay10 + HoursDay11 + HoursDay12 + HoursDay13 + HoursDay14#", 
        groupFooterTemplate: function (data) { 
         return (data["HoursDay8"].sum + data["HoursDay9"].sum + data["HoursDay10"].sum + data["HoursDay11"].sum + data["HoursDay12"].sum + data["HoursDay13"].sum + data["HoursDay14"].sum); 
        } 
        }, 
        {field: "PayPeriodTotal", title: "Total", width: 50, template: "#= HoursDay1 + HoursDay2 + HoursDay3 + HoursDay4 + HoursDay5 + HoursDay6 + HoursDay7 + HoursDay8 + HoursDay9 + HoursDay10 + HoursDay11 + HoursDay12 + HoursDay13 + HoursDay14#", 
        groupFooterTemplate: function (data) { 
         return (data["HoursDay1"].sum + data["HoursDay2"].sum + data["HoursDay3"].sum + data["HoursDay4"].sum + data["HoursDay5"].sum + data["HoursDay6"].sum + data["HoursDay7"].sum + 
         data["HoursDay8"].sum + data["HoursDay9"].sum + data["HoursDay10"].sum + data["HoursDay11"].sum + data["HoursDay12"].sum + data["HoursDay13"].sum + data["HoursDay14"].sum); 
        } 
        }], 
       resizable: true, 
       editable: true, 
       toolbar: toolbarTemplate(e.data.EmployeeNum, e.data.FullName, e.data.RCN, e.data.OtAllowedInd), 
       dataBound: function() { 
        //Set row color when the row is Overtime 
        var grid = childTimesheetGrid; 
        var data = grid.dataSource.data(); 
        $.each(data, function (i, row) { 
         if (row.OvertimeInd == 'Y') 
          $('tr[data-uid="' + row.uid + '"] ').css("color", "#FF0000"); 
        }); 

        //Set background color for weekend columns 
        $('tr').each(function() { 
         $(this).find('td:nth-child(5)').addClass('Weekend_Days'); 
         $(this).find('td:nth-child(6)').addClass('Weekend_Days'); 
         $(this).find('td:nth-child(13)').addClass('Weekend_Days'); 
         $(this).find('td:nth-child(14)').addClass('Weekend_Days'); 
        }); 
       }, 
       save: function (e) { 
        var dataSource = this.dataSource; 
        e.model.one("change", function() { 
         dataSource.one("change", function() { 
          dataSource.aggregates().HoursDay1.sum; 
          dataSource.aggregates().HoursDay2.sum; 
          dataSource.aggregates().HoursDay3.sum; 
          dataSource.aggregates().HoursDay4.sum; 
          dataSource.aggregates().HoursDay5.sum; 
          dataSource.aggregates().HoursDay6.sum; 
          dataSource.aggregates().HoursDay7.sum; 
          dataSource.aggregates().HoursDay8.sum; 
          dataSource.aggregates().HoursDay9.sum; 
          dataSource.aggregates().HoursDay10.sum; 
          dataSource.aggregates().HoursDay11.sum; 
          dataSource.aggregates().HoursDay12.sum; 
          dataSource.aggregates().HoursDay13.sum; 
          dataSource.aggregates().HoursDay14.sum; 
          dataSource.aggregates().Week1Total.sum; 
          dataSource.aggregates().Week2Total.sum; 
          dataSource.aggregates().PayPeriodTotal.sum; 
         }); 
         dataSource.fetch(); 
        }); 
       } 

      }).data("kendoGrid"); 

      childTimesheetGrid.table.kendoTooltip({ 
       filter: "td[tip]", 
       content: function (e) { 
        var target = e.target; // element for which the tooltip is shown 
        return $(target).attr('tip'); 
       } 
      }); 
     } 
    }, 

回答

0

什么版本的jQuery您使用的是?我读到1.8.2的数字框出现了一些问题...尝试更新。

+0

参照这样的: [链接](http://www.telerik.com/forums/tabbing-out-of-numeric-inputs-causes-changed-value-to-revert) – Jason

+0

我正在使用jQuery 1.91。 – user3285675

+0

也注意到它在网格中的注释单元存在问题。当我编辑评论和标签时,它也会回到网格的开头。 – user3285675

1

终于找到了解决办法。 由于每周和每日小计(我的聚合)的保存,发现标签不起作用。所以我允许保存,然后如果用户单击选项卡,然后重新集中到下一个单元格。

这里是我的解决方案: 增加了两个变量来保存我的位置,如果我点击标签:

JARS.TimeSheet.focusCellHold = -1; 
JARS.TimeSheet.isKeyTabHold = false; 

然后将此代码添加到网格的数据绑定事件:

if (JARS.TimeSheet.focusCellHold > 0 && JARS.TimeSheet.isKeyTabHold) { 
    setTimeout(function() { 

     var grid = childTimesheetGrid; 
     //Set the focus on the next cell. 
     grid.current(grid.tbody.find("td").eq(JARS.TimeSheet.focusCellHold + 1)); 
     grid.editCell(grid.tbody.find("td").eq(JARS.TimeSheet.focusCellHold + 1)); 
     JARS.TimeSheet.isKeyTabHold = false; 
    }, 750); 
} 

$(childTimesheetGrid.tbody).on("keydown", "td", function (e) { 
    if (e.keyCode === kendo.keys.TAB) { 
     JARS.TimeSheet.isKeyTabHold = true; 
    } 
}); 

$(childTimesheetGrid.tbody).on("focus", "td", function (e) { 
    var cell = $(this).closest("td"); 
    var cellIndx = $("td", childTimesheetGrid.tbody).index(cell); 
    JARS.TimeSheet.focusCellHold = cellIndx; 
});