Hi Bertrand,

What is SQLResultRow, is it a Wicket Type? Or should I create a custom class
named "SQLResultRow"?

The problem is, I can't create a custom "SQLResultRow" because I can't be
sure of its member fields.

User can run any SQL, so the type must be compatible with any result. For
example:
1) select firstname, lastname from employees;   => Returns <Employee>
2) select locationcode, locationname from locations; => Returns <Location>
... (any SQL can return any unpredictable object)
So it is impossible to create a custom "SQLResultRow"

Anyway, I have solved the problem in the complex, hard way which is about to
use 2 nested repeaters (ListView). 1 for table column names loop, 1 for
table rows loop.

And, I got the answer: There is no easy way in wicket to do that kind of
dynamic thing.

Thanks,


On 22 July 2011 18:03, Bertrand Guay-Paquet <[email protected]> wrote:

> Hi,
>
> Here is the outline of a possible implementation :
>
> Execute SQL String
> Create a List<IColumn<SQLResultRow>>
> for each SQL result column:
>    add a column to the list that displays one column of a SQLResultRow
> Create a very simple ISortableDataProvider that returns the SQL result from
> above
> (make it more complex to implement sorting)
> Create a DataTable using the column list and the data provider
>
>
> On 22/07/2011 2:05 AM, davut uysal wrote:
>
>> Someone in another forum advised me this:
>>
>> ***
>> Maybe in latest Wicket something changed but in 1.4.16 you can't change
>> Columns in DataTable. So it's immutable in some sense.
>>
>> But you may replace whole DataTable component instead when your sql
>> statement changes:
>>
>> form.add(new Button("sqlSubmit") {
>>    void onSubmit() {
>>      String sql = ...;
>>      form.replace(createDataTable("**myDataTable", sql));
>>    }
>> })
>> form.add(createDataTable("**myDataTable", null));
>>
>> Where createDataTable() creates DataTable using provided id and sql
>> string.
>> Also there is a convenient method Component.replaceWith(). Maybe it'll fit
>> better to your coding style.
>>
>> ***
>>
>> I think this is what I need, but I dont know how to do. Can someone please
>> help me to create below method?
>>
>> *createDataTable("wicketId", "SQL")*
>>
>> Thanks,
>>
>> On 21 July 2011 21:05, Andrew 
>> Fielden<andrew.fielden@power-**oasis.com<[email protected]>
>> >wrote:
>>
>>  I see your problem Davut, but I really don't think Wicket can solve it in
>>> the
>>> way you want it to. As Martin said, you need an<entity>  to populate the
>>> models used by the various Wicket components.
>>> Could you somehow parse the SQL statement to extract the table name, and
>>> find its meta data?
>>>
>>>
>>> --
>>> View this message in context:
>>> http://apache-wicket.1842946.**n4.nabble.com/dynamic-**
>>> DataTable-tp3683514p3684513.**html<http://apache-wicket.1842946.n4.nabble.com/dynamic-DataTable-tp3683514p3684513.html>
>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>
>>> ------------------------------**------------------------------**
>>> ---------
>>> To unsubscribe, e-mail: 
>>> users-unsubscribe@wicket.**apache.org<[email protected]>
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@wicket.**apache.org<[email protected]>
> For additional commands, e-mail: [email protected]
>
>

Reply via email to