2014-04-29 4 views
11

Ich bin neu in Kendo Grid und Kendo UI. Meine Frage ist, wie ich diesen Fehler beheben kannUncaught TypeError: kann die Eigenschaft 'replace' von undefined nicht lesen In Grid

Uncaught TypeError: Cannot read property 'replace' of undefined 

Dies ist mein Code auf meinem KendoGrid

$("#Grid").kendoGrid({ 
      scrollable: false, 
      sortable: true, 
      pageable: { 
       refresh: true, 
       pageSizes: true 
      }, 
      dataSource: { 
       transport: { 
        read: { 
         url: '/Info/InfoList?search=' + search, 
         dataType: "json", 
         type: "POST" 
        } 

       }, 
       pageSize: 10 
      }, 
      rowTemplate: kendo.template($("#rowTemplate").html().replace('k-alt', '')), 
      altRowTemplate: kendo.template($("#rowTemplate").html()) 
     }); 

Linie, die den Fehler verursacht

rowTemplate: kendo.template($("#rowTemplate").html().replace('k-alt', '')), 

HTML von rowTemplate

<script id="rowTemplate" type="text/x-kendo-tmpl"> 
     <tr class='k-alt'> 
      <td> 
       ${ FirstName } ${ LastName } 
      </td> 
     </tr> 
      </script> 

Danke :)

+2

der einzige Grund, warum ich sehen kann, zu definieren ist, dass jQuery nicht in der Lage ist, das Element mit id 'rowTemplate' ... finden können Sie das Protokoll Wert von '$ (" # rowTemplate "). length" und sehen, was zurückgegeben wird –

+0

@ArunPJohny es gibt 0 –

+0

das ist der Grund ... es gibt kein Element mit ID 'rowTemplate' auf Ihrer Seite –

Antwort

21

Ich denke, dass jQuery das Element nicht finden kann.

Zunächst einmal finden das Element

var rowTemplate= document.getElementsByName("rowTemplate"); 

oder

var rowTemplate = document.getElementById("rowTemplate"); 

oder

var rowTemplate = $('#rowTemplate'); 

Dann Code versuchen Sie es erneut

rowTemplate.html().replace(....) 
1

Bitte versuchen Sie es mit dem folgenden Code-Snippet.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
    <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.common.min.css" rel="stylesheet" /> 
    <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.default.min.css" rel="stylesheet" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
    <script src="http://cdn.kendostatic.com/2014.1.318/js/kendo.all.min.js"></script> 
    <script> 
     function onDataBound(e) { 
      var grid = $("#grid").data("kendoGrid"); 
      $(grid.tbody).find('tr').removeClass('k-alt'); 
     } 

     $(document).ready(function() { 
      $("#grid").kendoGrid({ 
       dataSource: { 
        type: "odata", 
        transport: { 
         read: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders" 
        }, 
        schema: { 
         model: { 
          fields: { 
           OrderID: { type: "number" }, 
           Freight: { type: "number" }, 
           ShipName: { type: "string" }, 
           OrderDate: { type: "date" }, 
           ShipCity: { type: "string" } 
          } 
         } 
        }, 
        pageSize: 20, 
        serverPaging: true, 
        serverFiltering: true, 
        serverSorting: true 
       }, 
       height: 430, 
       filterable: true, 
       dataBound: onDataBound, 
       sortable: true, 
       pageable: true, 
       columns: [{ 
        field: "OrderID", 
        filterable: false 
       }, 
          "Freight", 
          { 
           field: "OrderDate", 
           title: "Order Date", 
           width: 120, 
           format: "{0:MM/dd/yyyy}" 
          }, { 
           field: "ShipName", 
           title: "Ship Name", 
           width: 260 
          }, { 
           field: "ShipCity", 
           title: "Ship City", 
           width: 150 
          } 
         ] 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <div id="grid"> 
    </div> 
</body> 
</html> 

Ich habe dasselbe mit anderer Weise implementiert.

1

Es könnte wegen der Eigenschaft pageable -> pageSizes: true sein.

Entfernen Sie dies und überprüfen Sie es erneut.

0

In meinem Fall habe ich eine Ansicht verwendet, die ich in Teilansicht konvertiert habe, und ich habe vergessen, die Vorlage aus "@Sektionsskripten" zu entfernen. Entfernen des Abschnitts Block, löste mein Problem. Dies liegt daran, dass die Abschnitte nicht in Teilansichten gerendert werden.

0

Es ist wichtig, eine ID in dem Modell

.DataSource(dataSource => dataSource 
     .Ajax() 
     .PageSize(20) 
     .Model(model => model.Id(p => p.id)) 
    ) 
+2

Bitte nur Englisch, tun keine Übersetzung für andere Sprachen hinzufügen. –