總之我期待實現「大多是」什麼在這裏顯示...
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作爲問題。