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