Hi,
i am using Smartclient 6.51 and use following code to refresh listgrids for displaying realtime data. The data does not disappear while fetching data in background. This works fine but I got some problems with the criteria.
Listgrid:
DataSource:
The Proble is that on initial fetch the criteria is set correct like this:
http://myurl/remarks/list/fetch?transId=1231422389789&refresh=0&startRow=0&endRow=75&sortBy=null
When the next time a refresh is triggered the parameter like startow, endRow and sortBy are undefined. But I need them to tell the server what SQL to perform.
http://myurl/remarks/list/fetch?transId=1231422509867&refresh=1&startRow=null&endRow=null&sortBy=null
I hope you could help me with this problem. I think it might have someting to do with the dsRequest in the transformRequest function.
Thanks in advance!!!
i am using Smartclient 6.51 and use following code to refresh listgrids for displaying realtime data. The data does not disappear while fetching data in background. This works fine but I got some problems with the criteria.
Listgrid:
Code:
isc.ListGrid.create( {
ID :"remarks_list_list1_0001",
componentTimestamp :"1231419451",
width :"100%",
height :"*",
minWidth :300,
membersMargin :10,
autoDraw :false,
autoFetchData :false,
alternateRecordStyles :true,
showAllRecords :false,
canGroupBy :false,
canSort :true,
showHeaderContextMenu :false,
wrapCells :true,
fixedRecordHeights :false,
loadingDataMessage :"Lade Daten...",
dataSource :"remarks_list_remarksds1_0001",
TI :null,
rowNum :-1,
timerInterval :60000,
timerEvent :null,
UI :"1_0001",
show : function() {
if (!remarksInfobox1_0001.isObserving(this, 'dataChanged')) {
remarksInfobox1_0001.observe(this, 'dataChanged','observer.updateInfo(this)');
this.startTimer(true);
} else {
if (null != this.timerEvent) {
isc.Timer.clear(this.timerEvent);
}
this.startTimer(false)
}
return this.Super('show', arguments);
},
startTimer : function(initial, force) {
var criteria = {};
if (remarks_list_list1_0001.data) {
if (remarks_list_list1_0001.data.criteria) {
criteria = remarks_list_list1_0001.data.criteria;
}
}
isc.addProperties(criteria, {
transId :isc.timeStamp(),
refresh :0,
metadata :sysReg.getRegistry('production').getRegistry(this.UI).getContext()
});
var interval = parseInt(this.timerInterval);
if (interval == 0) {
} else if (interval < 1000) {
interval = 5000;
}
if (initial == true) {
this.fetchData(criteria, function() {});
if (null != this.timerEvent) {
isc.Log.logInfo('TIMER CLEARED');
isc.Timer.clear(this.timerEvent);
}
} else {
if (!sysReg.getRegistry('client').getRecVal('modalState')) {
if ((remarks_list_list1_0001.isVisible() && remarks_list_list1_0001.isDrawn()) || (force == true)) {
this.selectedRowNum = this.data.indexOf(this.getSelectedRecord());
remarksInfobox1_0001.refreshing();
criteria.refresh = 1;
var compDs = this.dataSource;
if (null != this.timerEvent) {
isc.Log.logInfo('TIMER CLEARED');
isc.Timer.clear(this.timerEvent);
}
isc.DataSource.get(this.dataSource).fetchData(
criteria,
function(dsResponse, data, dsRequest, compDs) {
var res = remarks_list_list1_0001.data;
if (!res) {
var res = isc.ResultSet.create( {
dataSource :compDs,
allRows :data
});
remarks_list_list1_0001.setData(res);
}
res.allRows = data;
res.localData = data;
res.totalRows = dsResponse.totalRows;
res.dataChanged();
var rowNum = remarks_list_list1_0001.selectedRowNum;
if (rowNum >= 0) {
remarks_list_list1_0001.selectRecord(rowNum);
}
remarksInfobox1_0001.refreshSucess();
isc.Log.logInfo('TIMER RESTARTED');
var interval = parseInt(this.timerInterval);
if (interval > 0) {
this.timerEvent = Timer.setTimeout("remarks_list_list1_0001.startTimer(false)",interval);
}
},
{showPrompt :false,useSimpleHttp :true});
}
}
}
if (interval > 0) {
this.timerEvent = Timer.setTimeout("remarks_list_list1_0001.startTimer(false)",interval);
}
}
});
Code:
isc.DataSource.create( {
ID :"remarks_list_remarksds1_0001",
componentTimestamp :"1231419450",
dataFormat :"xml",
recordXPath :"/response/data/dataset/row",
dataTimestamp :null,
UI :"1_0001",
metadata : {
user :"oliver",
S :1,
D :520,
UI :"1_0001",
TI :"1_0001"
},
fields : [ {
name :'id',
type :'integer',
title :'Id',
primaryKey :true
}, {
name :'date',
title :'Datum'
}, {
name :'remark',
type :'text',
title :'Bemerkung'
} ],
transformRequest : function(dsRequest) {
this.Super('transformRequest', dsRequest);
dsRequest.timeout = 240000;
dsRequest.useSimpleHttp = true;
var params = {
metadata :sysReg.getRegistry('production').getRegistry('1_0001').getContext(),
startRow :dsRequest.startRow,
endRow :dsRequest.endRow,
sortBy :dsRequest.sortBy
};
return isc.addProperties( {}, dsRequest.data, params)
},
transformResponse : function(dsResponse, dsRequest, data) {
this.transformResponseCheck(dsResponse, dsRequest, data);
this.transformResponseValidation(dsResponse, dsRequest, data,'1_0001');
return dsResponse;
}
});
http://myurl/remarks/list/fetch?transId=1231422389789&refresh=0&startRow=0&endRow=75&sortBy=null
When the next time a refresh is triggered the parameter like startow, endRow and sortBy are undefined. But I need them to tell the server what SQL to perform.
http://myurl/remarks/list/fetch?transId=1231422509867&refresh=1&startRow=null&endRow=null&sortBy=null
I hope you could help me with this problem. I think it might have someting to do with the dsRequest in the transformRequest function.
Thanks in advance!!!
Comment