总之我期待实现“大多是”什么在这里显示...
http://demos.telerik.com/kendo-ui/treelist/remote-data-binding
...但它是一个有点在本例中,数据来自多个基本端点url。
我想建立一个通用的查询页面的建筑,它允许用户选择一个背景,那么“类型”(或终点),然后从那里建立在该端点上的自定义查询。
我设法去的地步,我这样做了一个简单的查询,但现在我试图处理更复杂的情况,我找回孩子,或者更深层次的数据项来自有问题的端点的点。
考虑到这一点......
概念
我有很多端点并非所有的OData但大多遵循的OData v4的规则,所以我想建立一个“的TreeGrid”已经选择了一个端点来显示查询可用的扩展选项。 我所有的端点都有一个名为GetMetadata()的自定义函数,它描述了该端点的类型信息,其中端点基本上是一个实现,它可能会或可能不会有一些其他自定义函数来处理很少有其他业务场景。
所以,对于一个HTTP GET请求,类似...
~/SomeContext/SomeType/GetMetadata()
...我还是会回到一个对象,它看起来像一个MVC /的WebAPI元数据容器。 该对象有一个称为“属性”其中一些是标量,其中的一些是复杂的(如在数据定义的)属性。
我想构建一个TreeListDataSource或HierarchicalDataSource对象,我可以使用它绑定到Kendo treeList控件只有复杂的属性,动态地为元组获取url并列出复杂的属性基于从与根端点父类型的属性信息的类型在页面上的其他控件被定义。
的问题
我似乎无法弄清楚如何配置剑道数据源对象为的TreeGrid来得到需要的结果,我认为有两个原因可能是一个...
- TreeListDataSource对象按照此处显示的演示:http://demos.telerik.com/kendo-ui/treelist/local-data-binding似乎意味着基于层次结构的控件需要一个扁平的数据源。
- 我无法弄清楚如何配置数据源,以便我可以传递父元信息(来自数据源的数据项),以便为get请求构建正确的端点url。
function getDatasource(rootEndpoint) {
return {
pageSize: 100,
filter: { logic: 'and', filters: [{ /* TODO:possibly filter properties in here? */ }] },
type: 'json',
transport: {
read: {
url: function (data) {
//TODO: figure out how to set this based on parent
var result = my.api.rootUrl + endpoint + "/GetMetadata()";
return result;
},
dataType: 'json',
beforeSend: my.api.beforeSend
}
},
schema: {
model: {
id: 'Name',
fields: {
Type: { field: 'Type', type: 'string' },
Template: { field: 'Template', type: 'string' },
DisplayName: { field: 'DisplayName', type: 'string' },
ShortDisplayName: { field: 'ShortDisplayName', type: 'string' },
Description: { field: 'Description', type: 'string' },
ServerType: { field: 'ServerType', type: 'string' }
}
}
parse: function (data) {
// the object "data" passed in here will be a meta container, a single object that contains a property array.
$.each(data.Properties, function (idx, item) {
item.ParentType = data;
item.Parent = ??? where do I get this ???
});
return data.Properties;
}
}
};
}
我的一些问题可能会下降的事实,元数据本身不具有主键,我想如果可能使用解析附加一个生成的GUID的密钥可能是一个想法,但随后我想在寻求孩子的时候,剑道在API上使用这个id作为问题。