Datasource与服务端交互数据格式
Datasource和后端交互一律采用json格式。
请求格式:
Fetch 自动分页:
Request URL:(get)
http://localhost:41088/servlets-examples/AServlet?_operationType=fetch&_startRow=0&_endRow=6&_textMatchStyle=exact&_componentId=countGrid&_dataSource=countryDS&isc_metaDataPrefix=_&isc_dataFormat=json
Request Method:get
Get参数
_operationType:fetch
_startRow:0
_endRow:6
_textMatchStyle:exact
_componentId:countGrid
_dataSource:countryDS
isc_metaDataPrefix:_
isc_dataFormat:json
Request URL:(post)
http://localhost:41088/servlets-examples/AsServlet?isc_dataFormat=json
Request Method:post
Get参数
isc_dataFormat:json
post参数
{ "dataSource":"countryDS", "operationType":"fetch", "startRow":0, "endRow":5, "textMatchStyle":"exact", "componentId":"countGrid", "data":{ "com_zte_dap_commandcode":"10110" }, "oldValues":null }
手工分页:
http://localhost:41088/servlets-examples/AsServlet?pageSize=5&pageNo=1&_operationType=fetch&_startRow=0&_endRow=75&_textMatchStyle=exact&_componentId=countGrid&_dataSource=countryDSManual&isc_metaDataPrefix=_&isc_dataFormat=xml
Request Method:get
Get参数
_operationType:fetch
_startRow:0
_endRow:6
_textMatchStyle:exact
_componentId:countGrid
_dataSource:countryDS
isc_metaDataPrefix:_
isc_dataFormat:json
pageNo:1
pageSize:5
Add
Request URL: (post)
http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST
Get参数:
isc_dataFormat:json
post参数
{ "dataSource":"countryDS", "operationType":"add", "data":{ "id":"99", "name":"zy" }, "oldValues":null }
Update
Request URL(post):
http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST
Get参数:
isc_dataFormat:json
post参数
{ "dataSource":"countryDS", "operationType":"update", "data":{ "id":"99", "zongying":"zy2" }, "oldValues":null }
Remove
Request URL: (post)
http://localhost:41088/servlets-examples/AosServlet?isc_dataFormat=json
Request Method:POST
Get参数:
isc_dataFormat:json
post参数
{ "dataSource":"countryDS", "operationType":"remove", "componentId":"countGrid", "data":{ "id":"UK", "zongying":"zy2" }, "oldValues":null }
响应格式:
正确响应:
Fetch
自动分页:
response: {status: '0',startRow: '0',dRow: '5',totalRows: '10',
data: [{id: '0',name: 'name0'}, {id: '1',name: 'name1'}, {id: '2',name: 'name2'}, {id: '3',name: 'name3'}, {id: '4',name: 'name4'}, {id: '5',name: 'name5'
}]}};
手工分页:
response: {status: '0',startRow: '0',endRow: '5',totalRows: '5',totalPages:'5',realTotalRows:'23',
data: [{id: '0',name: 'name0'}, {id: '1',name: 'name1'}, {id: '2',name: 'name2'}, {id: '3',name: 'name3'}, {id: '4',name: 'name4'}, {id: '5',name: 'name5'
}]}};
Add,update,remove
response: {status: '0',data: [{id: '0',name: 'name0'}]]}};
返回一般错误
response: {status: '-1',data: “error mesdsage”}
返回数据验证错误
{"response": {"endRow": 0,"totalRows": 0,"status": -4,"startRow": 0,"data": {"errorMessage": "A error on field1"}}}
或者
{response: {status: -4,errors: {field1: {errorMessage: "A validation error on field1"},field2: {errorMessage: "A validation error on field2"}}}}
使用示例
//定义数据源
varcountryDS = isc.RestDataSource.create({
ID:"countryDS",
dataFormat:"json",
//recordXPath: "//country",
fetchDataURL:"/servlets-examples/AsServlet",
addDataURL:"/servlets-examples/AsServlet",
updateDataURL:"/servlets-examples/AsServlet",
removeDataURL:"/servlets-examples/AsServlet",
selectionAppearance:"checkbox",
operationBindings: [{
operationType:"fetch",
dataProtocol:"getParams"
//dataProtocol: "postMessage"
}, {
operationType:"add",
dataProtocol:"postMessage"
}, {
operationType:"update",
dataProtocol:"postMessage"
}, {
operationType:"remove",
dataProtocol:"getParams"
}],
fields: {
id: {
name:"id",
title:"Code",
primaryKey:true,
required:true
},
name: {
name:"name",
title:"Country",
canEdit:true
}
},
handleError:function(response, request){
//如果服务端返回错误
if (response.status < 0) {
var errMsg = null;
//-90系统级别错误:找不到服务器(httpResponseCode/ xmlHttpRequest.status :0),或者找不到资源(404)
//-1服务端servlet处理后,返回系统级别错误,不可恢复错误(200)。
//-4服务端servlet处理后,回数据校验错误(200)
switch (response.status) {
case-90:
errMsg = response.data.data;
break;
case-1:
errMsg = response.data
break;
case-4:
default:
}
//Canvas.getById(request.componentId ).data=null;
isc.warn('自定义错误处理信息:\n' + errMsg);
countGrid.data =null;
returnfalse;//是否屏蔽默认错误处理
}
//response.status>=0处理
}
})
//定义数据绑定控件,并且绑定到数据源
var countGrid = isc.ListGrid.create({
ID:"countGrid",
width: 500,
height: 100,
alternateRecordStyles:true,
dataSource: countryDS,//绑定到数据源
autoFetchData:false,
autoSaveEdits:false,
});
//查询数据
var actButton = isc.Button.create({
left: 200,
top: 120,
width: 150,
title:"fetch data",
click:function(){
countGrid.invalidateCache();
countGrid.fetchData({
com_zte_dap_commandcode:'10110'
});
}
});