2015-12-17 11 views
5

Gibt es eine Möglichkeit, können wir den Index der Spalte im Raster herausfinden, wenn wir den Spaltennamen in Kendo Gitter kennen?Get Spalte Index von Spalte Name in Kendo Gitter in Javascript

z.B.

EmployeeID| Name 
123  | John 

Ich möchte den Index von 'Name' Feld kennen, d. H. 1 im Raster. Irgendwelche Vorschläge.

Danke.

Sanjeev

+0

Wofür benötigen Sie den Index? Versuchen Sie zu bearbeiten/zu löschen? Sie müssen ein wenig mehr Informationen bereitstellen, damit wir Ihnen helfen können. –

+0

@ haakon319 Ich muss Spalte in meinem Raster ausblenden/anzeigen. hideColumn/showColumn funktioniert im Kendo-Grid, aber die Performance ist sehr langsam, also wollte ich diese Lösung ausprobieren, die einen Spaltenindex benötigt. http://stackoverflow.com/questions/30167893/kendo-grid-column-show-hide-making-issue-with-80-columns – sanjeev40084

Antwort

6

Bitte versuchen Sie es mit dem folgenden Codeausschnitt.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Jayesh Goyani</title> 
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.2.902/styles/kendo.common-bootstrap.min.css" /> 
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.2.902/styles/kendo.bootstrap.min.css" /> 
    <script src="https://kendo.cdn.telerik.com/2015.2.902/js/jquery.min.js"></script> 
    <script src="https://kendo.cdn.telerik.com/2015.2.902/js/kendo.all.min.js"></script> 
</head> 
<body> 
    <div id="example"></div> 
    <input type="text" id="txtColumnName" /> 
    <button onclick="GetColumnIndexFromName();">GetIndex</button> 
    <script> 
     $(document).ready(function() { 
      $("#example").kendoGrid({ 
       dataSource: { 
        type: "odata", 
        transport: { 
         read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Customers" 
        }, 
        pageSize: 20 
       }, 
       height: 550, 
       groupable: true, 
       sortable: true, 
       pageable: { 
        refresh: true, 
        pageSizes: true, 
        buttonCount: 5 
       }, 
       columns: [{ 
        template: "<div class='customer-name'>#: ContactName #</div>", 
        field: "ContactName", 
        title: "Contact Name", 
        width: 240 
       }, { 
        field: "ContactTitle", 
        title: "Contact Title" 
       }, { 
        field: "CompanyName", 
        title: "Company Name" 
       }, { 
        field: "Country", 
        width: 150 
       }] 
      }); 
     }); 

     function GetColumnIndexFromName() { 
      var index = -1; 
      var strName = $("#txtColumnName").val(); 
      var grid = $("#example").data("kendoGrid"); 
      var columns = grid.options.columns; 
      if (columns.length > 0) { 
       for (var i = 0; i < columns.length; i++) { 
        if (columns[i].field == strName) { // columns[i].title -- You can also use title property here but for this you have to assign title for all columns 
         index = i; 
        } 
       } 
      } 

      if (index == -1) { 
       alert("column name not exists"); 
      } 
      else { 
       alert("column index is:- " + index); 
      } 
     } 
    </script> 
</body> 
</html> 

Lassen Sie mich wissen, wenn irgendwelche Bedenken.

2

Dieser Code wird die Spalte Objekt geben:

var grid = $('#grid').getKendoGrid(); 
grid.columns.find(function(v, i) { return grid.columns[i].field == 'myColumnName'; }) 

Natürlich können Sie den Filter weiter anpassen können, wenn Sie wollen.

+0

Dies wird technisch nicht erhalten ** Index ** der Spalte, aber es bekommt die tatsächliche Spalte, die ich brauchte, anstatt den Index. – TLS