2017-09-11 4 views
2

Ich habe ein Kendo-Raster mit 1 editierbaren Spalte, wenn ich eine bestimmte JavaScript-Funktion ausführen möchte ich Bearbeitung für die aktuell ausgewählte Zelle aktivieren. Der Punkt ist, dass dies programmgesteuert geschieht und nicht durch Klicken auf die Zelle. Der aktuelle Code wählt die Zelle aus, die in den Bearbeitungsmodus versetzt werden muss, aktiviert aber nicht den Bearbeitungsmodus selbst.Editiermodus für Kendogrid ausgewählte Zelle

Edit (fix):

Ich hatte den Index auf die Zellenauswahl auf +1 zu ändern, während die Zeilenauswahl die gleiche (wahrscheinlich, weil der Kopf zählt als eine Zelle oder etwas) geblieben. Es gab auch Funktionen, die den Fokus vom Editierfeld wegführten, das es sofort geschlossen hat.

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); 
      } 
     }) 
    } 
}); 

Grid:

@(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")) 
    ) 

Auf Edit:

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(); 
    }) 
} 

Antwort

0

Statt:

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

Versuchen:

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

Bereits versucht, aber es hatte keine Wirkung. – Alim

+0

Können Sie Ihre onEdit-Ereignisdefinition auch posten? –

+0

Ich habe es zum Hauptpost hinzugefügt, es stellt derzeit sicher, dass ich den Wert beim Öffnen des Feldes mit einem Mausklick automatisch auswähle. – Alim

Verwandte Themen