2014-04-29 25 views
11

Tôi mới sử dụng Kendo Grid và Kendo UI. Câu hỏi của tôi là làm thế nào tôi có thể giải quyết lỗi nàyUncaught TypeError: không thể đọc thuộc tính 'thay thế' không xác định Trong Lưới

Uncaught TypeError: Cannot read property 'replace' of undefined 

Đây là Mã của tôi trên 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()) 
     }); 

Đường dây của tôi rằng Nguyên nhân Lỗi

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

HTML của rowTemplate

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

Cảm ơn :)

+2

lý do duy nhất tôi có thể thấy là jQuery là không thể tìm thấy các phần tử với id 'rowTemplate' ... bạn có thể đăng nhập giá trị của '$ (" # rowTemplate "). length' và xem những gì được trả về –

+0

@ArunPJohny nó trả về 0 –

+0

đó là lý do ... không có yếu tố với id' rowTemplate' trong trang của bạn –

Trả lời

21

Tôi nghĩ jQuery không thể tìm thấy phần tử.

Trước hết tìm ra yếu tố

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

hoặc

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

hoặc

var rowTemplate = $('#rowTemplate'); 

Sau đó thử lại mã của bạn

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

Vui lòng thử với đoạn mã bên dưới.

<!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> 

Tôi đã thực hiện điều tương tự theo cách khác.

1

Có thể là do thuộc tính pageable -> pageSizes: true.

Xóa mục này và kiểm tra lại.

0

Trong trường hợp của tôi, tôi đã sử dụng Chế độ xem mà tôi đã chuyển đổi thành chế độ xem từng phần và tôi quên xóa mẫu khỏi "tập lệnh @section". Loại bỏ khối phần, giải quyết vấn đề của tôi. Điều này là do các phần không được hiển thị trong các khung nhìn một phần.

0

Điều quan trọng là xác định một id trong mô hình

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

Xin vui lòng chỉ tiếng anh, làm không thêm bản dịch cho các ngôn ngữ khác. –

Các vấn đề liên quan