首页 文章

具有大数据源的Kendo输入

提问于
浏览 24
0

我已经为选定的网格行创建了一个Kendo Grid和一个自定义Form . 使用AngularJS,我存储到'formData'变量选定的行数据 . 例如

$scope.fromData = {   uid: guid,   id:  guid,   name: string,   otherEntityId: guid }

现在在我的表单中,我有一个'otherEntityId'的KendoDropDown输入 . 使用dataTextField和dataValueField,我想查看其他数据源并根据外键显示其他属性 .

dataTextField: "Name",
      dataValueField: "otherEntityId",

例如,我有一个实体人{id:guid,name:string,cityId:guid}和另一个实体城市{name:string,id:guid}

第一个cityId与第二个实体id相同 .

在我的形式这工作,我有来自第一个数据源的id,在我的输入中,我显示基于id的名称,它就像'查找'字段 .

问题是我的第二个实体的数据源太大,我无法立即加载 .

我想要一种机制,对于网格中的每一行选择,输入将在数据源中发送带过滤器的请求

dataSource.filter = { field: dataValueField, operator: "eq", value: $scope.formDataItem[dataValueField] };

当用户点击查看下拉列表输入的更多选项时,我希望其他过滤器使用'startswith'之类的

dataSource.filter = { field: dataTextField, operator: "startswith", value: getInput().text() };

怎么办呢?如何在open事件中更改数据源的过滤器?

1 回答

  • 0

    我使用过滤事件 . 所以..当我初始化值我在数据源过滤器中使用guid所以只能加载一个项目,当过滤事件调用i更改过滤器并正常工作 .

    $scope.options.filtering = function (e) {
    
                e.preventDefault();
                if (prevText.length >= minLength) {
                    delete dataSource.filter;
                    dataSource.filter = { field: dataTextField, operator: "startswith", value: getInput()._prev};
                    getInput().setDataSource(dataSource);
                }
                else
                    getInput().setDataSource({ data: [] });
    
        }
    

相关问题