在SmartGWT中的ListGrid更新请求期间从行(不仅更改)发送所有数据

时间:2014-01-02 11:03:30

标签: rest smartgwt

目前我正在尝试自定义SmartGWT的DataSource以使用自定义REST服务。当在ListGrid行中进行了一些更改时,我遇到了发送更新请求的问题。默认情况下,仅在更新请求中发送行中已更改的单元格(如here所述)。我想更改此行为以发送不仅编辑的行中的所有数据。我已经花了很多时间搞清楚如何做到这一点,但仍无法找到解决方案。你能否告诉我如何改变这种OOTB行为?可能有人有类似的问题,并找到了解决方案。

2 个答案:

答案 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;
    }
    ...
}