Thanks for the response, Jeremy. CnvDataTable.onSortChanged() now subclasses CnvOrderByLink.onSortChanged(). I've tried adding the cnvDataTable and a WebMarkupContainer wrapper to the target, but I wasn't successful with either. Any other ideas? Thanks for the help.

Unrelated question: If reloading a parent object, is it necessary for its children objects to call setOutputMarkupId(true) in order for the them to reload?

Thanks,
Ryan


On Jan 20, 2009, at 7:01 PM, Jeremy Thomerson wrote:

This is your problem (I think):

In DataTable, when a toolbar is added, it is calling:
toolbar.setRenderBodyOnly(true);
Hence, the error message.

Try seeing if you can add the entire table to the AJAX target (or any outer
container of it) so that the entire thing is repainted.

--
Jeremy Thomerson
http://www.wickettraining.com

On Tue, Jan 20, 2009 at 4:27 PM, Ryan O'Hara <[email protected]> wrote:

I've created a customized CnvHeaderToolbar which like HeadersToolbar
extends AbstractToolbar. In addition to the header title, I also have inserted a triangle image that helps to display sort order and sort order direction. The problem I am having is that I have been unable to figure out how to reload CnvHeaderToolbar when an OrderByLink is clicked, so that the new sort order triangle image can be displayed. I've have also created custom CnvOrderByBorder and CnvOrderByLink objects. I have hooked into
these two classes onClick/onSortChanges, so that I have access to the
AjaxRequestTarget from CnvOrderByLink in CnvHeaderToolbar. Below is some
code:

CnvHeaderToolbar:

protected WebMarkupContainer newSortableHeader(String headerId, String
property,
                                                  ISortStateLocator
locator, PageParameters params, Class page) {
       return new CnvOrderByBorder(headerId, property, locator) {

           private static final long serialVersionUID = 1L;

           public void onClick() {
               System.out.println("In newSortableHeader: OnClick()");
               ((CnvDataTable) getTable()).setHeaderClicked(true);
           }

           protected void onSortChanged(AjaxRequestTarget target) {
System.out.println("In newSortableHeader: OnSortChanged()");
               ((CnvDataTable) getTable()).setHeaderClicked(true);
               //target.addComponent();
           }
       };

   }

The latest I error I got when trying to reload CnvHeaderToolbar in the
onSortChanged() method above is:

"Ajax render cannot be called on component that has setRenderBodyOnly
enabled."

Any advice on how to reload the HeadersToolbar? The actual sorting is working, it's just that the triangle images are not being reloaded. Any
help would be greatly appreciated.

Thanks,
Ryan


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to