是否可以设置Kendo ListView的DataSource而不使用DataSource然后调用read()
方法?
我有一个主要的DataSource,我在ListView和所有子ListViews上使用,但我只是根据一些条件为每个ListView过滤它。我这样做的方法是,一旦所有数据都绑定到主ListView,然后我创建所有子ListView并分配相同的数据源进行过滤。
我在这里遇到的问题是,一旦我将过滤后的DataSource分配给新的ListView,它似乎再次调用read方法。
baSurveyGroupTemplateDataSource: new kendo.data.DataSource({
transport: {
read: {
async: false,
url: "/Url/to/data"
dataType: "json",
type: "GET",
data: {
id: $("#TemplateId").val()
},
}
}
}),
groupDataBound: function (e) {
$(".childBaSuveyGroupTemplate").each(function () {
viewModel.seedGroup(this);
});
},
seedGroup: function (parentGroup) {
var childrenGroupList = $(parentGroup);
var parentGroupId = childrenGroupList.data("id");
var childrenGroupDataSource = new kendo.data.DataSource(viewModel.baSurveyGroupTemplateDataSource);
childrenGroupDataSource.query({
filter: ({ field: "BaSurveyGroupTemplateParentId", operator: "eq", value: parentGroupId })
});
childrenGroupList.kendoListView({
template: kendo.template($("#baSurveyGroupTemplateDisplayTemplate").html()),
dataSource: childrenGroupDataSource
});
}
如果我需要澄清任何事情,请告诉我。我很难尝试把我正在做的事情和我遇到的问题都用在文字中。
答案 0 :(得分:1)
尝试将此添加到ListView配置中:
autoBind: false
来自http://docs.telerik.com/kendo-ui/api/javascript/ui/listview#configuration-autoBind
的kendo文档如果设置为false,则窗口小部件将不会绑定到数据源 初始化。在这种情况下,数据绑定将在更改时发生 触发数据源的事件。默认情况下,小部件将绑定到 配置中指定的数据源。
将多个小部件绑定到的时,将autoBind设置为false非常有用 相同的数据源。禁用自动绑定可确保 共享数据源不会向远程数据库发出多个请求 服务。
然后在设置完所有内容后手动触发数据源读取:
childrenGroupDataSource.read(); // "read()" will fire the "change" event of the dataSource and the widget will be bound