Hi,
I've noticed that after DynamicForm we are getting a corrupted ecord from getData(), some fields appear, e.g. "_selection_1" ...
Tested: latest Smartclient 10.0 LGPL 2016-02-03, 2016-01-15
Steps:
1) select any record from listgrid
2) click "save"
	
Then "this.selection.select(updatedRecord);"isc.ListGrid.addMethods.performReselectOnUpdate(), ISC_Grids.js:31793" is called it will corrupt response from server,
stack:
isc.addProperties.performReselectOnUpdate(), ISC_Core.js:76707
isc.Selection.addMethods.dataChanged(), ISC_Grids.js:6334
isc.Selection.addMethods.dataArrived(), ISC_Grids.js:6313
---
and this response is passed into DynamicForm._saveValues() ( @ isc.EditorActionMethods.addInterfaceMethods._saveDataReply(), ISC_DataBinding.js:52506 )
so my DynamicForm will get some random field "_selection_1" out of no there.
performReselectOnUpdate(modifiedRecord) will call this.selection.select(updatedRecord) which adds "_selection_1" property to response.,
and modifiedRecord === updatedRecord . Do not know is this due to clientOnly DataSource, but we see this behavior also in our production code.
	
PS. As I workaround now I use reselectOnUpdate:false;
 
							
						
					I've noticed that after DynamicForm we are getting a corrupted ecord from getData(), some fields appear, e.g. "_selection_1" ...
Tested: latest Smartclient 10.0 LGPL 2016-02-03, 2016-01-15
Steps:
1) select any record from listgrid
2) click "save"
Code:
	
	
var listGrid;
var ds = isc.DataSource.create({
    ID: "ds",
    clientOnly: true,
    fields: [{name: 'id', primaryKey: true}, {name: 'title', type: 'text'}],
    testData: [
        {
            id: 1,
            title: 'Hello world'
        },
        {
            id: 2,
            title: 'Inside-Outside'
        },
        {
            id: 3,
            title: 'High-Low'
        }
    ]
});
var listgrid, form, output;
var layout = isc.VLayout.create({
//    reselectOnUpdate: false, // uncomment this and problem is fixed.
    autoDraw: true,
    width: "500",
    height: "300",
    members: [
        listgrid = isc.ListGrid.create({
            autoFetchData: true,
            width: "100%",
            height: "300",
            dataSource: "ds",
            recordClick: function () {
                form.editSelectedData(listgrid);
            }
        }),
        form = isc.DynamicForm.create({
            dataSource: "ds",
            fields: [
                {
                    name: "title",
                    type: "text"
                }
            ]
        }),
        isc.Button.create({
            title: 'Save',
            click: function () {
                form.saveData(function () {
                    output.setContents('<br/>getData(): ' + JSON.stringify(form.getData()) + '<br/>'
                    );
                });
            }
        }),
        output = isc.HTMLFlow.create({
            width: "100%",
            height: "30"
        })
    ]
});
Then "this.selection.select(updatedRecord);"isc.ListGrid.addMethods.performReselectOnUpdate(), ISC_Grids.js:31793" is called it will corrupt response from server,
stack:
isc.addProperties.performReselectOnUpdate(), ISC_Core.js:76707
isc.Selection.addMethods.dataChanged(), ISC_Grids.js:6334
isc.Selection.addMethods.dataArrived(), ISC_Grids.js:6313
---
and this response is passed into DynamicForm._saveValues() ( @ isc.EditorActionMethods.addInterfaceMethods._saveDataReply(), ISC_DataBinding.js:52506 )
so my DynamicForm will get some random field "_selection_1" out of no there.
performReselectOnUpdate(modifiedRecord) will call this.selection.select(updatedRecord) which adds "_selection_1" property to response.,
and modifiedRecord === updatedRecord . Do not know is this due to clientOnly DataSource, but we see this behavior also in our production code.
Code:
	
	
dataChanged : function (operationType,originalRecord,rowNum,updateData,filterChanged,dataFromCache) {
    if (this._ignoreNextDataChanged) {
        delete this._ignoreNextDataChanged;
        return;
    }
    if (this.reselectOnUpdate && operationType == "update" && originalRecord != null &&
        originalRecord[this.selectionProperty])
    {
        var modifiedRecord = this.data.findByKey(originalRecord);
        if (modifiedRecord) this.performReselectOnUpdate(modifiedRecord);  // modifiedRecord === updateDate !
        // so if modifiedRecord is updated, also updateData is updated. and this data is passed into DynamicForm.
PS. As I workaround now I use reselectOnUpdate:false;
Comment