我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)相关的知识,希望对你有一定的参考价值。
我在使用带有OData4Adaptor的DataManager消耗响应时遇到问题,在Syncfusion中它是某种限制,它只消耗来自OData WebApi的数据,而不是普通的WebAPI。
以下工作:
Api响应:
{
"@odata.context": "http://localhost:32097/odata/$metadata#Movies",
"@odata.count": 30,
"value": [{
"Id": 1,
"Title": "StarWars - The Force Awakens",
"ReleaseDate": "2015-10-25T00:00:00+05:30",
"Rating": "FiveStar",
"LastModifiedOn": "2017-12-20T16:43:14.3413207+05:30"
}]
}
以下不起作用:
Api响应:
{
"count": 15,
"message": "",
"value": [{
"code": "asdf",
"description": "Test ASDF",
"createdBy": "SA ",
"createdDate": "2017-12-13T06:53:30.183"
}]
}
答案
ODataV4Adaptor期望以标准OData V4格式进行响应。要使用ODataV4Adaptor接受其他响应格式,可以通过扩展ODataV4Adaptor来编写自定义适配器。
import { DataManager, Query, ODataV4Adaptor } from '@syncfusion/ej2-data';
class CustomODataAdaptor extends ODataV4Adaptor {
processResponse(data: Object, dataManager: DataManager, query: Query) {
/**
* Return the result in the { result, count } pair when query has requiresCount() enabled.
* else simply return the entity collection.
* Response structure:
* {
* "count": 15,
* "value": [{}, {}.....]
* }
*/
return query.isCountRequired ? { result: data['value'], count: data['count'] } : data['value'];
}
}
//Assign the custom adaptor as follows
new DataManager({ url: SERVICE_URI, adaptor: new CustomODataAdaptor })
.executeQuery(new Query().take(8).requiresCount()).then((e) => {
// e.result will hold the result
});
现在,DataManager可以接受来自非OData WebAPI的响应。
有关DataManager中的更多可用适配器,请查看以下帮助链接。
DataAdaptors:http://ej2.syncfusion.com/15.4.17/documentation/data/adaptors.html编写自定义适配器:http://ej2.syncfusion.com/15.4.17/documentation/data/adaptors.html?lang=typescript#writing-custom-adaptor
以上是关于我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)的主要内容,如果未能解决你的问题,请参考以下文章
Syncfusion Xamarin.Forms生成的PDF格式的文本