1

我希望我的标题不会太混乱。先举个例子。我有以下代码为Kendo UI数据源配置读取操作。我正在尝试根据所选公司 ID 过滤所有读取,但我的getSelectedCompanyId函数只在页面加载时被调用一次。下面的代码太长了,这里不能全部包含,所以只是摘录。

$(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()

我意识到这可能与 Kendo 的东西高度相关,但也许这是我可以通过简单的 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);
}

或者,如果您希望能够有时调用一次,然后再调用一次,您可以创建一个提供新行为的新方法,并在需要时使用它:

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