As Cosma explained before, all the control is done using a datamodel, even if you bind a list object as the value of a uidata, it is wrapped as a ListDataModel object. For example when you call
datatable.setRowIndex (5);
datatable.getRowData();
At UIData, it leads to
getDataModel().setRowIndex(5);
getDataModel().getRowData();
At DataModel it finally refers to;
setRowIndex(5); // sets row index
getRowData(); //finally returns list.get(rowIndex);
Cagatay
On 7/4/06, Alexandre Jaquet <[EMAIL PROTECTED]> wrote:
Well Cosma first thanks for your explanation, if I understand well, all
components have to extend UIData and we can set to every components a
dataModel?
Cosma Colanicchia wrote:
> Hi Alexandre,
>
> it's simple, JSF defines a DataModel class that is used by UIData
> componentes (like the data table). Note that it is allowed the usage
> of some other types (for example java.util.List) because DataModel
> implementations that wraps it are available automatically picked.
>
> Basically, the datatable will initially ask your DataModel size using
> getDatasetSize(), then ask rows as need one by one calling:
>
> - isRowAvailable(index) to see if a particular index maps to an actual
> row
> - setRowIndex(index) to make that index current
> - getRowData() to get the object with the data of the current row index
>
> So, if you need more control, you can implement your DataModel object
> (extending the JSF base class) and specify it as the datatable's value
> attribute.
>
> This way you can, for example, implement the getDatasetSize() doing a
> SELECT COUNT on the database and query the db only for a limited set
> of rows in getRowData(), instead of loading an entire table in memory
> when creating the view.
>
>
> Hope this helps
> Cosma
>
> 2006/7/4, Alexandre Jaquet <[EMAIL PROTECTED]>:
>> Hi,
>>
>> I want to understand how work DataTable any good documentation ? I want
>> to understand the cars-demo example :
>> http://wiki.apache.org/myfaces/WorkingWithLargeTables
>>
>> regards
>>
>

