Kendo ui 使用下拉值绑定剑道网格数据

Kendo ui 使用下拉值绑定剑道网格数据,kendo-ui,kendo-grid,kendo-dropdown,Kendo Ui,Kendo Grid,Kendo Dropdown,我在页面上有剑道下拉列表,它从数据库中获取结果,如下所示。我也有一个网格在同一页在同一时间,需要剑道下拉列表值,即从年下拉列表的值,但我无法得到它在同一时间。这是我下面的方式。我做错了什么 <script type="text/javascript"> var GridUrl; $("#Years").kendoDropDownList({ dataTextField: "Name", dataValueField: "Id",

我在页面上有剑道下拉列表,它从数据库中获取结果,如下所示。我也有一个网格在同一页在同一时间,需要剑道下拉列表值,即从年下拉列表的值,但我无法得到它在同一时间。这是我下面的方式。我做错了什么

<script type="text/javascript">

 var GridUrl;

    $("#Years").kendoDropDownList({
        dataTextField: "Name",
        dataValueField: "Id",

        dataSource: {
            transport: {
                read: {
                    dataType: "json",
                    url: "../../Service/GetYears"

                }
            }
        }
    });



   $(document).ready(function () {
BindGridData();
  GridUrl = '@Url.Action("Read", "Home")';

});

function BindGridData()
{
            GridDataSource = new kendo.data.DataSource({
            type: "aspnetmvc-ajax",
            serverFiltering: true,
            serverPaging: true,
            serverSorting: true,
            pageSize: 10,
            transport: {
                read: {
                    url: GridUrl,
                    data: { year: $('#Years').val() }
                }
            },
            schema: {
                data: "Data", total: "Total"
            }
        });
}

var-GridUrl;
$(“#年”)。kendoDropDownList({
dataTextField:“名称”,
dataValueField:“Id”,
数据源:{
运输:{
阅读:{
数据类型:“json”,
url:“../Service/GetYears”
}
}
}
});
$(文档).ready(函数(){
BindGridData();
GridUrl='@Url.Action(“读取”、“主目录”);
});
函数BindGridData()
{
GridDataSource=新建kendo.data.DataSource({
键入:“aspnetmvc ajax”,
是的,
对,,
对,,
页面大小:10,
运输:{
阅读:{
url:GridUrl,
数据:{year:$('#Years').val()}
}
},
模式:{
数据:“数据”,总计:“总计”
}
});
}
将行更改为此

year: $('#Years').data("kendoDropDownList").value()
这应该是个骗局。您需要获取
kendoDropDownListwidget
的实例才能获取其值。您需要这样做,因为
kendoDropDownListwidget
值不会直接保存到
html
元素中

将行更改为此

year: $('#Years').data("kendoDropDownList").value()

这应该是个骗局。您需要获取
kendoDropDownListwidget
的实例才能获取其值。您需要这样做,因为
kendoDropDownListwidget
值没有直接保存到
html
元素中。首先,您需要将
kendoDropDownList
的初始化移到document ready函数中。如果不这样做,您可能会引用(尚未加载)的元素

应该做的第二个更改是如何从
kendoDropDownList
获取值。通常,您应该引用小部件而不是DOM元素:
$(“#年”).data(“kendoDropDownList”).value()

最后,您没有提到如何以及何时绑定网格,但是如果用户更改下拉列表值,您可能希望刷新网格数据。如果是这种情况,您可能希望使用下拉列表的
change
事件刷新网格数据

$(document).ready(function () {

    $("#Years").kendoDropDownList({
        dataTextField: "Name",
        dataValueField: "Id",
        dataSource: {
            transport: {
                read: {
                    dataType: "json",
                    url: "../../Service/GetYears"
                }
            }
        },
        change: function(e) {
            $("#YourGrid").data("kendoGrid").dataSource.read();
        }
    });

    BindGridData();
    GridUrl = '@Url.Action("Read", "Home")';

});

function BindGridData() {
    GridDataSource = new kendo.data.DataSource({
        type: "aspnetmvc-ajax",
        serverFiltering: true,
        serverPaging: true,
        serverSorting: true,
        pageSize: 10,
        transport: {
            read: {
                url: GridUrl,
                data: { year: $('#Years').data("kendoDropDownList").value() }
            }
        },
        schema: {
            data: "Data", total: "Total"
        }
    });
}

首先,您需要将
kendoDropDownList
的初始化移到document ready函数中。如果不这样做,您可能会引用(尚未加载)的元素

应该做的第二个更改是如何从
kendoDropDownList
获取值。通常,您应该引用小部件而不是DOM元素:
$(“#年”).data(“kendoDropDownList”).value()

最后,您没有提到如何以及何时绑定网格,但是如果用户更改下拉列表值,您可能希望刷新网格数据。如果是这种情况,您可能希望使用下拉列表的
change
事件刷新网格数据

$(document).ready(function () {

    $("#Years").kendoDropDownList({
        dataTextField: "Name",
        dataValueField: "Id",
        dataSource: {
            transport: {
                read: {
                    dataType: "json",
                    url: "../../Service/GetYears"
                }
            }
        },
        change: function(e) {
            $("#YourGrid").data("kendoGrid").dataSource.read();
        }
    });

    BindGridData();
    GridUrl = '@Url.Action("Read", "Home")';

});

function BindGridData() {
    GridDataSource = new kendo.data.DataSource({
        type: "aspnetmvc-ajax",
        serverFiltering: true,
        serverPaging: true,
        serverSorting: true,
        pageSize: 10,
        transport: {
            read: {
                url: GridUrl,
                data: { year: $('#Years').data("kendoDropDownList").value() }
            }
        },
        schema: {
            data: "Data", total: "Total"
        }
    });
}