2017-09-11 1 views
2

J'ai une grille de kendo avec une colonne modifiable, lorsque j'exécute une certaine fonction javascript, je veux activer l'édition pour la cellule actuellement sélectionnée. Le fait est que cela se produit par programmation et non en cliquant sur la cellule. Ce que fait le code actuellement, c'est sélectionner la cellule qui doit être mise en mode d'édition mais ne pas activer le mode d'édition lui-même.Mode d'édition pour la cellule sélectionnée par kendogrid

Edit (fix):

je devais changer l'indice à la sélection des cellules à 1 tandis que la sélection de la ligne est restée la même (probablement parce que les comptes d'en-tête comme une cellule ou quelque chose). Il y avait aussi des fonctions qui ont enlevé l'accent du champ d'édition qui l'a fermé instantanément.

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

Grille:

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

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

Répondre

0

Au lieu de cela:

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

Essayez:

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

Déjà essayé mais cela n'a eu aucun effet. – Alim

+0

Pourriez-vous également publier votre définition d'événement onEdit? –

+0

Je l'ai ajouté à la publication principale, il s'assure actuellement que je sélectionne automatiquement la valeur lors de l'ouverture du champ avec un clic de souris. – Alim