Hello,
it took me a while to figure out how to write an implementation of the
qx.ui.table.model.Remote class. I will provide this class as a
much-needed example. Now everything works with the backend - the data is
prefetched and everything - sweet! But .... nothing shows up in my
table, event though the data is passed to this._onRowDataLoaded() as
required. My data looks like this:
[ [ "foo","bar","baz"],["Foo!","BAR!","zoo"], ...]
What am I doing wrong?
Thanks, Christian
/**
* An implementation of the abstract class qx.ui.table.model.Remote that
uses
* qcl.databinding.simple package
*/
qx.Class.define("qcl.databinding.simple.RemoteTableModel",
{
extend : qx.ui.table.model.Remote,
construct : function(serviceName)
{
this.base(arguments);
this.setServiceName(serviceName||"");
this.setDataBinding(true);
// setup event listener for handling data received by MDataManager mixin
this.addEventListener("dataReceived",function(e){
result = e.getData();
if ( result== null )
{
this.setRowCount(null);
this.setRowData([]);
}
else if ( "rowCount" in result )
{
this.setRowCount(result.rowCount);
}
else if ( "rowData" in result )
{
this.setRowData(result.rowData);
}
});
},
properties :
{
/**
* the data passed to the server methods which determine row count
and row data
* it is up to the server method to interpret this data - it can be
a full sql
* query string (not recommended) or just bits of data (in an array
or object)
* to construct the query.
*/
queryData :
{
nullable : true,
init : null
},
/**
* name of the jsonrpc service method that determines row count
* defaults to "getRowCount"
*/
serviceMethodGetRowCount :
{
check : "String",
nullable : false,
init : "getRowCount"
},
/**
* name of the jsonrpc service method that retrieves the row data
* defaults to "getRowData"
*/
serviceMethodGetRowData :
{
check : "String",
nullable : false,
init : "getRowData"
}
},
members :
{
/**
* overridden
* in this version of a remote table model, simply an alias for
this.reloadData()
*/
updateClient : function()
{
this.reloadData();
},
/**
* gets number of rows that the query will produce.
* The value of the queryData property is passed to the
* service class on the server which needs to return the following
* response: { result : { rowCount : 1234 }, ... }
*
* @type member
* @abstract
* @return {void}
*/
_loadRowCount : function()
{
if ( ! this.getServiceName() ) return 0; // do not do any updates
until service name is known
this._updateClient(
this.getServiceName() + "." + this.getServiceMethodGetRowCount(),
this.getQueryData()
);
this._rowCount = 0; // update is in progress
},
/**
* receives the row count value returned by the server and passes it on
* to the _onRowCountLoaded function as required by
qx.ui.table.model.Remote
*/
setRowCount : function (rowCount)
{
this._onRowCountLoaded(rowCount);
},
/**
* gets the column names as an array
* @return {Array}
*/
getColumnIds : function ()
{
return this._columnIdArr;
},
/**
* Loads row data from the server. The service class on the server
* must have the following signature:
* Mixed queryData data from which to construct the query
* Integer firstRow
* Integer lastRow
* The server jsonrpc response must look like so:
* { result : { rowData : [ [ ... ],[...],...] }, ..}
*
* @type member
* @abstract
* @param firstRow {Integer} The index of the first row to load.
* @param lastRow {Integer} The index of the last row to load.
* @return {void}
*/
_loadRowData : function(firstRow, lastRow)
{
if ( ! this.getServiceName() ) return []; // do not do any updates
until service name is known
this._updateClient(
this.getServiceName() + "." + this.getServiceMethodGetRowData(),
this.getQueryData(),firstRow,lastRow
);
},
/**
* receives the row data returned by the server and passes it on
* to the _onRowDataLoaded function as required by
qx.ui.table.model.Remote
*/
setRowData : function (rowDataArr)
{
this._onRowDataLoaded(rowDataArr);
}
}
});
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel