Another piece of advice, Avoid unnecessary casts (Wicket 6 supports generics) and try not to use code to navigate the wicket component tree unnecessary like this line of code:
WebMarkupContainer container = ((WebMarkupContainer) dropDownChoice.findParent(DataTable.class).get(1)); Get familiar with the best practices documented at: http://wicket.apache.org/guide/guide/single.html#bestpractices You should give the free guide a read back to back and treat it as your bible until you get a bit more intimate with Wicket :) Other resources available for you to learn and master Wicket are the Wicket Stuff (http://wicketstuff.org/) and the examples at: http://www.wicket-library.com/wicket-examples-6.0.x/index.html Get familiar to those as well. For a filter toolbar see: http://www.wicket-library.com/wicket-examples-6.0.x/repeater/wicket/bookmarkable/org.apache.wicket.examples.repeater.DataTableFilterToolbarPage;jsessionid=03E1374082C8198F0F052CED6E54F7A1?0 Although is not using a drop-down but you'll get the idea :) ~ Thank you, Paul Bors On Tue, Sep 9, 2014 at 2:57 PM, Paul Bors <p...@bors.ws> wrote: > Hey Ephraim, > > At Knoa for the console code I created an API around those components. > You don't have to re-invent the wheel, all you have to do is get familiar > with the console commons and which DropDown component to use. > > Remember wicket is a component driven framework similar to Swing. > > I would recommend using one of the Ajax enabled drop downs and override > the method to refresh the data table rows of interest. There are plenty of > examples in the console's code base... look at how other table such as the > ones for the End User attributes are refreshed or how the edit button in a > table cell will turn the table row into form components. Use the same > principle. > > Also, if this is just a filter toolbar, then look at how other Ajax filter > toolbars work and you won't loos focus of the drop down since it's Ajax > that does the refresh. > > If you are to re-implement this from scratch and re-invent the wheel you > can also but I won't recommend it. > Just look over the current available components in your commons API and > use the appropriate one, or extend it and make it do what you need. > > Martin was referring to the event mechanism build in Wicket documented in > the Wicket Guide at: > http://wicket.apache.org/guide/guide/single.html#advanced_1 > > But for a simple filter toolbar you don't need to get that complicated. > > ~ Have fun, > Paul Bors > > On Tue, Sep 9, 2014 at 12:29 PM, Ephraim Rosenfeld <erosenf...@knoa.com> > wrote: > >> Hi Martin: >> >> >> >> Thank you for your quick response. >> >> >> >> I was initially updating the entire table, but that was causing me to >> lose focus from the drop-down menu in which I made the selection. Also, my >> hope was that I could update as few row items/components as possible, >> thereby expediting the table-refresh process. >> >> >> >> When you mention 'Wicket's Event System', are you referring to >> inter-component events, like the example portrayed here: >> http://savicprvoslav.blogspot.com/2012/06/wicket-15-inter-component-events.html >> >> >> >> Regards, >> >> >> >> - Ephraim >> >> >> >> -----Original Message----- >> From: Martin Grigorov [mailto:mgrigo...@apache.org] >> Sent: Tuesday, September 09, 2014 12:10 PM >> To: users@wicket.apache.org >> Subject: Re: Referencing DataTable rows within the table column header >> >> >> >> Hi, >> >> >> >> Why don't you update the table itself ? This will update all its children >> components too. >> >> >> >> Otherwise I'd use Wicket's Event system to send a notification to all >> interested parties. >> >> >> >> Martin Grigorov >> >> Wicket Training and Consulting >> >> https://twitter.com/mtgrigorov >> >> >> >> >> >> On Tue, Sep 9, 2014 at 7:01 PM, Ephraim Rosenfeld <erosenf...@knoa.com >> <mailto:erosenf...@knoa.com>> >> >> wrote: >> >> >> >> > Hello All, >> >> > >> >> > I am creating a table with a DropDownChoice component in the header of >> >> > one of the columns. When a selection is made in the drop down in the >> >> > column header, I want to update all of the rows in the table. >> >> > >> >> > Would the following snippet be the best approach to reference each row >> >> > Item component from the column header, or is there an alternative to >> >> > using the get() method? >> >> > >> >> > Thank you in advance, >> >> > >> >> > - Ephraim >> >> > >> >> > WebMarkupContainer container = >> >> > ((WebMarkupContainer)dropDownChoice.findParent(DataTable.class).get(1)); >> >> > DataGridView gridView = >> >> > (DataGridView)container.get(0); >> >> > for(int i = 0; i < NUM_OF_ROWS; i++) { >> >> > Item item = (Item)gridView.get(i); >> >> > // do row updates >> >> > } >> >> > >> > >