web-dev-qa-db-ja.com

Uncaught TypeError:未定義のIn Gridのプロパティ 'replace'を読み取ることができません

私は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', '')),

RowTemplateのHTML

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

JQueryは要素を見つけることができないと思います。

まず、要素を見つける

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

または

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

または

var rowTemplate = $('#rowTemplate');

その後、コードを再試行してください

rowTemplate.html().replace(....)
23
Dr.Nyanpasu

プロパティpageable -> pageSizes: trueが原因である可能性があります。

これを削除して、もう一度確認してください。

2
user3724031

以下のコードスニペットで試してください。

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

同じことを異なる方法で実装しました。

1
Jayesh Goyani

私の場合、部分ビューに変換したビューを使用していましたが、「@ sectionスクリプト」からテンプレートを削除するのを忘れていました。セクションブロックを削除して、問題を解決しました。これは、セクションが部分ビューでレンダリングされないためです。

0
Vinícius Rosa

モデルでidを定義することが重要です

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