Thanks for the reply ...
I tried doing this :
class MyDataProvider extends ListDataProvider {
DataDao dataDao;
Criteria criteria;
public MyDataProvider(List list, Criteria criteria) {
super(list);
...
}
//providing my own iterator which goes to the dataDao and gets the data
//But now I cannot set the list, because private... So I have to use my
own list member...If I do that, then what is the point of calling the
constructor with List?
}
Looks like ListDataProvider is not useful for reusable Lists. Not sure why
this should be so ? If I am able to set a new List into the provider, I
would not be breaking anything because the data is anyway retrieved only via
an Iterator.
The problem is even if I create a new ListDataProvider for every new list, I
am not able to set that again in my data view. DataView does not have any
thing similar to setList (a la ListView.setList). I dont think I should be
creating a new DataView for every search, because all i'm doing is only
changing contents of the underlying list.
Am I missing something ?
On Tue, May 26, 2009 at 12:29 PM, Igor Vaynberg <[email protected]>wrote:
> you can build your own analog of listdataprovider that pulls the list
> directly from whatever property contains the latest.
>
> -igor
>
> On Tue, May 26, 2009 at 9:38 AM, Vasu Srinivasan <[email protected]>
> wrote:
> > Hello:
> > I have a simple search form , where some criteria refreshes the table
> based
> > on the db. I got it working with ListView, but im trying to use
> > ListDataProvider, I feel missing something:
> >
> > class MyForm {
> > List myList;
> > MyDataView myDataView;
> > MyDataProvider myDataProvider;
> >
> > public MyForm() {
> > @Override public void onSubmit() {
> > myList = refreshData(criteria);
> > //Question: How do I set this list into the myDataView or
> > myDataProvider ? I thought myDataView or the provider will auto pick it
> up,
> > because its a member variable and is a RefreshingView
> > }
> >
> > //First time
> > myList = refreshData(defaultCriteria);
> > myDataView = new MyDataView("myDataView" , new
> MyDataProvider(myList));
> > add(myListView);
> > }
> > }
> >
> >
> > class MyDataView extends DataView {
> > public MyDataView(String id, IDataProvider provider) { super(id,
> > provider); }
> >
> > @Override public void populateItem(Item item) { .... }
> > }
> >
> > class MyDataProvider extends ListDataProvider {
> > public MyDataProvider(List list) {
> > super(list);
> > }
> > }
> >
> > I looked at the example that uses ListView
> > http://cwiki.apache.org/WICKET/reading-from-a-database.html
> > <http://cwiki.apache.org/WICKET/reading-from-a-database.html>
> >
> > With ListView it works fine if I do this in the method onSubmit()
> >
> > myList = refreshData(criteria);
> > myListView.setList(myList);
> >
> > But with DataView, I do not have a set method to reset the new list
> obtained
> > based on the criteria. The db returns correct data, but the page displays
> > the old data (no change). Neither do I see a method to set the new list
> in
> > the ListDataProvider.
> >
> > I even tried adding a new view inside the onSubmit, but that doesnt work
> > either:
> >
> > myDataView = new MyDataView("myDataView", new MyDataProvider(newList));
> >
> > --
> > Thanks!
> > Vasu Srinivasan
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
--
Regards,
Vasu Srinivasan