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 <igor.vaynb...@gmail.com>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 <vasy...@gmail.com>
> 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: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>


-- 
Regards,
Vasu Srinivasan

Reply via email to