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
>>
>> >                 }
>>
>> >
>>
>
>

Reply via email to