【问题标题】:Kendo Input with big dataSource具有大数据源的剑道输入
【发布时间】:2017-09-16 20:16:24
【问题描述】:

我已经为选定的网格行创建了一个剑道网格和一个自定义表单。 使用 AngularJS,我将选定的行数据存储到“formData”变量中。 例如

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

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

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

例如,我有一个实体人 { id:guid,名称:字符串,cityId:guid} 与另一个实体城市 { 名称:字符串,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() };

怎么办?如何更改打开事件的数据源过滤器?

【问题讨论】:

    标签: drop-down-menu kendo-ui datasource large-data


    【解决方案1】:

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

         $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: [] });
    
        }
    

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2013-07-17
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多