Re: Ajax Response breaks down if CheckGroupSelector is added to AjaxFallbackDefaultDataTable

2008-11-13 Thread Igor Vaynberg
try repainting the form instead of the table

-igor

On Thu, Nov 13, 2008 at 2:13 AM, Esko Suomi <[EMAIL PROTECTED]> wrote:
> .which is not desired. I have a test case which is something like this:
>
>
>   tester.clickLink("form:group:table:rows:1:cells:8:cell:delete", true);
>   tester.assertComponentOnAjaxResponse("form:group:table");
>
>
> group is CheckGroup, table is AjaxFallbackDefaultDataTable and delete is
> AjaxFallbackLink. The code for delete link which is in its own column looks
> like this:
>
>
>   columns.add(new AbstractColumn(new Model("Edit")) {
> public void populateItem(Item> item,
> String id, IModel model) {
>   Fragment f = new Fragment(id, "editlink", getPage());
> Link delete = new
> AjaxFallbackLink("delete", model) {
>   @Override
>   public void onClick(AjaxRequestTarget art) {
>   getAdPersister().delete(getModelObject());
>   if (art != null) art.addComponent(table);
>   }
>   };
>   delete.add(new Label("label", "delete"));
>   delete.add(new SimpleAttributeModifier("onclick", "return
> confirm('are you sure?');"));
>   f.add(delete);
>   item.add(f);
>   }
> });
>
>
> and its fragment's markup looks like this:
>
>
>   
>wicket:id="label">
>wicket:id="label">
>   
>
>
> The snippets above works if CheckGroupSelector isn't present. What I wanted
> to do was to add a checkbox to each row as new column and a "select all"
> checkbox to the new column's header so first I added this:
>
>
>   columns.add(new AbstractColumn(new Model("Controls")) {
>   public void populateItem(Item> item,
>   String id, IModel model) {
>   Fragment f = new Fragment(id, "checkboxfragment", getPage());
>   f.add(new Check("check", new Model(false)));
>   item.add(f);
>   }
>   });
>
>
> Markup for the fragment is
>
>
>   
>   
>   
>
>
> I also added the components to hierarchy like so:
>
>
>   CheckGroup myGroup = new CheckGroup("group", new ArrayList());
>   form = new Form("form");
>   table = newTable(); // this method creates the entire table
>   myGroup.add(table);
>   form.add(myGroup);
>
>
> With that everything still works so I added the header override like so:
>
>
>   columns.add(new AbstractColumn(new Model("Controls")) {
> @Override
>   public Component getHeader(String componentId) {
>   Fragment f = new Fragment(componentId, "checkboxfragment",
> getPage());
>   f.add(new CheckGroupSelector("check"));
>   return f;
>   }
>
>   public void populateItem(Item> item,
>   String id, IModel model) {
>   Fragment f = new Fragment(id, "checkboxfragment", getPage());
>   f.add(new Check("check", new Model(false)));
>   item.add(f);
>   }
>   });
>
>
> and now that I run the test case it now gives me the following exception on
> the line tester.assertComponentOnAjaxResponse("form:group:table");
>
>
>   junit.framework.AssertionFailedError: Component wasn't found in the AJAX
> response
>
>
> Any ideas how I can get this to work?
>
> -
> 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]



Ajax Response breaks down if CheckGroupSelector is added to AjaxFallbackDefaultDataTable

2008-11-13 Thread Esko Suomi

.which is not desired. I have a test case which is something like this:


   tester.clickLink("form:group:table:rows:1:cells:8:cell:delete", true);
   tester.assertComponentOnAjaxResponse("form:group:table");


group is CheckGroup, table is AjaxFallbackDefaultDataTable and delete is 
AjaxFallbackLink. The code for delete link which is in its own column 
looks like this:



   columns.add(new AbstractColumn(new Model("Edit")) {
  
   public void populateItem(Item> item, 
String id, IModel model) {

   Fragment f = new Fragment(id, "editlink", getPage());
  
   Link delete = new 
AjaxFallbackLink("delete", model) {

   @Override
   public void onClick(AjaxRequestTarget art) {
   getAdPersister().delete(getModelObject());
   if (art != null) art.addComponent(table);
   }
   };
   delete.add(new Label("label", "delete"));
   delete.add(new SimpleAttributeModifier("onclick", "return 
confirm('are you sure?');"));

   f.add(delete);
   item.add(f);
   }
  
   });



and its fragment's markup looks like this:


   
   wicket:id="label">
   wicket:id="label">

   


The snippets above works if CheckGroupSelector isn't present. What I 
wanted to do was to add a checkbox to each row as new column and a 
"select all" checkbox to the new column's header so first I added this:



   columns.add(new AbstractColumn(new Model("Controls")) {
   public void populateItem(Item> item,
   String id, IModel model) {
   Fragment f = new Fragment(id, "checkboxfragment", getPage());
   f.add(new Check("check", new Model(false)));
   item.add(f);
   }
   });


Markup for the fragment is


   
   
   


I also added the components to hierarchy like so:


   CheckGroup myGroup = new CheckGroup("group", new ArrayList());
   form = new Form("form");
   table = newTable(); // this method creates the entire table
   myGroup.add(table);
   form.add(myGroup);


With that everything still works so I added the header override like so:


   columns.add(new AbstractColumn(new Model("Controls")) {
  
   @Override

   public Component getHeader(String componentId) {
   Fragment f = new Fragment(componentId, "checkboxfragment", 
getPage());

   f.add(new CheckGroupSelector("check"));
   return f;
   }

   public void populateItem(Item> item,
   String id, IModel model) {
   Fragment f = new Fragment(id, "checkboxfragment", getPage());
   f.add(new Check("check", new Model(false)));
   item.add(f);
   }
   });


and now that I run the test case it now gives me the following exception 
on the line tester.assertComponentOnAjaxResponse("form:group:table");



   junit.framework.AssertionFailedError: Component wasn't found in the 
AJAX response



Any ideas how I can get this to work?

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]