Подтвердить что ты не робот

Uncaught TypeError: невозможно прочитать свойство "replace" из undefined In Grid

Я новичок в использовании Kendo Grid и Kendo UI. Мой вопрос, как я могу решить эту ошибку

Uncaught TypeError: Cannot read property 'replace' of undefined 

Это мой код на моей 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())
        });

Строка, которая вызывает ошибку

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

HTML-код rowTemplate

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

Ответ 1

Я думаю, что jQuery не может найти элемент.

Прежде всего найдите элемент

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

или

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

или

var rowTemplate = $('#rowTemplate');

Затем повторите попытку кода

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

Ответ 2

Это может быть из-за свойства pageable -> pageSizes: true.

Снимите это и снова проверьте.

Ответ 3

Попробуйте использовать приведенный ниже фрагмент кода.

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

Я реализовал одно и то же с другим способом.

Ответ 4

В моем случае я использовал представление, которое я преобразовал в частичное представление, и я забыл удалить шаблон из "скриптов @section". Удалив блок раздела, я решил проблему. Это связано с тем, что разделы не отображаются в частичных представлениях.

Ответ 5

Важно определить идентификатор в модели

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