web-dev-qa-db-ja.com

TypeError:r.getClientRectsは関数ではありません

このリンクをたどってKendoUIグリッドにカスタムツールバーを作成しようとしています: http://demos.telerik.com/kendo-ui/grid/toolbar-template でエラーが発生します。

これは私がコードでやろうとしていることです:

<div id="example">
    <script type="text/x-kendo-template" id="template">
        <div class="toolbar">
            <label class="category-label" for="category">Show products by category:</label>
            <input type="search" id="category" style="width: 150px" />
        </div>
    </script>
    <div id="grid"></div>
    <script>
        $(document).ready(function () {
            var grid = $("#grid").kendoGrid({
                dataSource: {

                    transport: {
                        read: {
                            url: 'http://localhost:52738/Default1/KendoDataAjaxHandle',
                            type: "post",
                            dataType: "json"
                        }
                    },
                    schema: {
                        data: "Data",
                        total: function (response) {
                            return $(response.Data).length;
                        }
                    },
                    pageSize: 10
                },
                toolbar: kendo.template($("#template").html()),
                groupable: true,
                sortable: true,
                pageable: {
                    refresh: true,
                    pageSizes: true,
                    buttonCount: 5
                },
                columns: [
                            {
                                field: "CustomerAltID",
                                filterable: true
                            },
                            {
                                field: "CustomerID",
                                title: "Customer ID"
                            },

                            {
                                field: "CustomerName",
                                title: "Customer Name",

                                template: "<div class='customer-photo'" +
                                                            "style='background-image: url(../Content/Images/customerimg/#:data.CustomerID#.jpg);'></div>" +
                                                        "<div class='customer-name'>#: CustomerName #</div>"
                            },
                            {
                                field: "Gender",
                                title: "Gender",
                                template: "<div class='gender-photo'" +
                                                            "style='background-image: url(../Content/Images/#:data.Gender#.jpg);'></div>" 

                            }
                ]
            });
            var dropDown = grid.find("#category").kendoDropDownList({
                dataTextField: "Gender",
                dataValueField: "CustomerID",
                autoBind: false,
                optionLabel: "All",
                dataSource: {

                    severFiltering: true,
                    transport: {
                        read: {
                            url: 'http://localhost:52738/Default1/KendoDataAjaxHandle',
                            type: "post",
                            dataType: "json"
                        }
                    },
                    schema: {
                        data:"Data"
                    }
                },
                change: function () {
                    var value = this.value();
                    if (value) {
                        grid.data("kendoGrid").dataSource.filter({ field: "CustomerID", operator: "eq", value: parseInt(value) });
                    } else {
                        grid.data("kendoGrid").dataSource.filter({});
                    }
                }
            });
        });
    </script>
</div>

何が問題なのかわからず、解決策がわからないのは数時間です。

私は次のバージョンを使用しています-Jqueryv-3.1およびJquery UI-1.12

7
Aakash Thakur

問題はjQuery v3.1を使用していることが原因である可能性があります

剣道は現在、公式にはjQuery v3では動作しません。しかし、jquery-migrateも含めれば、明らかには機能しますhttp://www.telerik.com/forums/jquery-3-

正式にサポートされているjQueryのバージョンは次のとおりです。 http://docs.telerik.com/kendo-ui/intro/installation/prerequisites#supported-jquery-versions 剣道R3 2016 SP2もjQuery 3.1.1で動作するはずです。

だからあなたはできる:

  1. 同梱されている/使用している剣道のバージョンでサポートされているバージョンのjQueryを使用する
  2. またはjquery-migrateでjQuery 3.1を使用します
  3. または、Kendo R3 2016SP2およびjQuery 3.1を使用します。1

このgithubの問題 https://github.com/jquery/jquery/issues/3157 で言及されている別の答えは、HTMLに<script src="https://code.jquery.com/jquery-migrate-3.0.0.min.js"></script>を含めることです。これは私のために働いた

18
Dreams