2017-09-11 41 views
2

當我執行某個javascript函數時,我想要啓用對當前選定單元格的編輯,我有一個具有1個可編輯列的kendo網格。重點是,這是以編程方式發生,而不是通過單擊單元格。代碼當前所做的是選擇需要設置爲編輯模式的單元,但不啓用編輯模式本身。kendogrid選中單元格的編輯模式

編輯(修復):

我不得不索引小區選擇更改爲+1,而行選擇保持不變(可能是因爲頭被視爲一個單元格或東西)。還有一些功能從編輯領域中奪走了焦點,並立即關閉了它。

JS:

$('#txtBarcode').keydown(function (e) { 
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; 
    if (key == 13) { 

     var grid = $("#PickListDetailGrid").data("kendoGrid"); 
     var dataSource = $("#PickListDetailGrid").data("kendoGrid").dataSource; 
     var allData = dataSource.data(); 
     var code = this.value; 

     $.each(allData, function (index, item) { 
      if (item.ArticleID == code) { 
       console.log("index :" + index);      
       var cell = grid.select("tr:eq(" + index + ") td:eq(" + (5) + ")"); 
       grid.editCell(cell); 
      } 
     }) 
    } 
}); 

網:

@(Html.Kendo().Grid<TelerikMvcApp1.Models.PickListLineViewModel>() 
         .Name("PickListDetailGrid") 
         .Columns(columns => 
         { 
          columns.Bound(c => c.ArticleName); 
          columns.Bound(c => c.ArticleID); 
          columns.Bound(c => c.PickID); 
          columns.Bound(c => c.LineNum); 
          columns.Bound(c => c.Quantity); 
          columns.Bound(c => c.PickedQuantity).HtmlAttributes(new { @id = "test" }); 
          columns.Bound(c => c.Status); 
         }) 
         .Editable(editable => editable.Mode(GridEditMode.InCell)) 
         .HtmlAttributes(new { style = "height: 75%;" }) 
         .Scrollable() 
         .Groupable() 
         .Sortable() 
         .Selectable() 
         .RowAction(row => 
         { 
          if (row.DataItem.Quantity == row.DataItem.PickedQuantity) 
          { 
           row.HtmlAttributes["class"] = "k-state-selected"; 
          } 
         }) 
         .ToolBar(toolbar => 
         { 
          toolbar.Custom().Text("Return to Picklists") 
          .HtmlAttributes(new { @style = "color:black; width:100%; height:50%;" }) 
          .Action("Picklist", "PickList"); 
         }) 
      .DataSource(dataSource => dataSource 
       .Ajax() 
       .Events(events => events.Error("error")) 
       .Model(model => model.Id(i => i.PickID)) 
       .Model(model => 
       { 
        model.Field(f => f.PickID).Editable(false); 
        model.Field(f => f.ArticleID).Editable(false); 
        model.Field(f => f.LineNum).Editable(false); 
        model.Field(f => f.Quantity).Editable(false); 
        model.Field(f => f.ArticleName).Editable(false); 
        model.Field(f => f.Status).Editable(false); 
        model.Field(f => f.PickedQuantity).Editable(true); 
       }) 
       .Read(read => read.Action("PickLines_Read", "PickList", new { name = "id", id = Model.FirstOrDefault().PickID })) 
       .Update(update => update.Action("submitPickList", "PickList")) 
     ) 
     .Events(events => events 
     .Change("onChange") 
     .Edit("onEdit") 
     .Save("onSave")) 
    ) 

在編輯:

function onEdit(e) { 
    e.container.find("input").bind("focus", function() { 
     if (this.style.display != "none") { 
      var element = this; 
      setTimeout(function() { 
       element.select(); 
      }) 
     } 
    }) 

    setTimeout(function() { 
     document.activeElement.select(); 
    }) 
} 

回答

0

相反:

var cell = grid.select("tr:eq(" + index + ") td:eq(" + (5) + ")"); 
grid.editCell(cell); 

試試:

grid.editCell("tr:eq(" + index + ") td:eq(" + (5) + ")"); 
+0

已經試過這個,但它沒有效果。 – Alim

+0

你還可以發佈你的onEdit事件定義嗎? –

+0

我已將它添加到主帖子中,它目前確保我在用鼠標點擊打開字段時自動選擇值。 – Alim

相關問題