目前我正在尝试自定义SmartGWT的DataSource以使用自定义REST服务。当在ListGrid行中进行了一些更改时,我遇到了发送更新请求的问题。默认情况下,仅在更新请求中发送行中已更改的单元格(如here所述)。我想更改此行为以发送不仅编辑的行中的所有数据。我已经花了很多时间搞清楚如何做到这一点,但仍无法找到解决方案。你能否告诉我如何改变这种OOTB行为?可能有人有类似的问题,并找到了解决方案。
答案 0 :(得分:1)
//覆盖DataSource中的transformRequest函数 //
@覆盖
protected void transformResponse(DSResponse响应,DSRequest请求, 对象数据){
// On Update Operation call will hit the below condition
//
if (dsRequest.getOperationType().equals(DSOperationType.UPDATE)) {
// Get the data from listGird
//
listGrid.getDataAsRecordList()
//Set to request
//
dsRequest.setData();
}
}
答案 1 :(得分:1)
以下是我在更新请求期间实现从行发送所有数据的方式。可能它会帮助某人。
我覆盖 transformRequest 方法并添加了这样的代码:
@Override
protected Object transformRequest(final DSRequest dsRequest) {
...
if (dsRequest.getOperationType = OperationType.UPDATE) {
...
final JavaScriptObject basicJSObject = dsRequest.getOldValues().getJsObj();
final JavaScriptObject latestChanges = dsRequest.getData();
JSOHelper.addProperties(basicJSObject, latestChanges);
// Regexp probably can be optimized
final String resultString = JSON.encode(responseData)
.replaceAll("[,]\\s*[,]", ",")
.replaceAll("^\\s*[,]", "")
.replaceAll("[,]\\s*$", "");
return resultString;
}
...
}