1

私のタイトルがあまり混乱しないことを願っています。最初の例。KendoUIデータソースの読み取り操作を構成する次のコードがあります。選択した会社IDに基づいてすべての読み取りをフィルタリングしようとしていますgetSelectedCompanyIdが、ページが読み込まれるときに関数が呼び出されるのは1回だけです。以下のコードは長すぎてここにすべてを含めることができないため、抜粋です。

$(function () {
    function getSelectedCompanyId() {
        var id = $("#CompanyId").val();
        return id;
    }

    $("#CompanyId").kendoDropDownList({
        change: function () {
            grid.dataSource.read();
        }
    });
    var departmentIndexDataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: '@Url.Action("ListForCompanyIdJson", "Department")' + '?companyId=' + getSelectedCompanyId(),
                type: "GET"
            },

アクションは、が呼び出さListForCompanyIdJsonれたときにドロップダウンで選択された値で常に呼び出さ$("#CompanyId").kendoDropDownList()れます。を呼び出すたびにこの関数を呼び出したいgrid.dataSource.read()

これは剣道のものに非常に固有であるかもしれないことを私は理解します、しかし多分それは私が単純なJavaScriptクロージャといくつかの助けで解決できる何かです。

4

1 に答える 1

3

grid.dataSource.read()常に最初に関数を呼び出し、次に を呼び出す代替関数をインストールできますgrid.dataSource.read()

例えば:

grid.dataSource.oldRead = grid.dataSource.read;
grid.dataSource.read = function() {
    // call your function here
    return grid.datasource.oldRead.apply(this, arguments);
}

または、1 つをときどき呼び出したり、別のときに呼び出したりできるようにしたい場合は、新しい動作を提供する新しいメソッドを作成し、必要なときにそれを使用できます。

grid.dataSource.myread = function() {
    // call your function here
    return grid.datasource.read.apply(this, arguments);
}
于 2012-04-16T22:11:12.343 に答える