Best way to implement DataTable updatable via Ajax

2008-07-28 Thread nanotech
 list back
List contacts = contactManager.getUsers();
if (first  0) {
contacts = contacts.subList(first, first + count);
}
return contacts.iterator();
}

public IModel model(Object object) 
{
 return new ContactModel((ContactInfoPOJO)object);
}

public int size() 
{
return contactManager.getContacts().size();
}

}


Questions:
1. Is calling dataprovider again the correct approach for updating the
datatable? (See TODO 1 above) Can someone please suggest an alternate
approach?
2. How do I pass the Error Object to Page's Panel from DataProvider in case
of Unsuccessful  save?(see TODo: 2 above)
3. Will onError be called if I somehow plugin the error message to feedback
Panel (See TODO: 3)



Thanks for reading the post.
-- 
View this message in context: 
http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18698367.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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



Re: Best way to implement DataTable updatable via Ajax

2008-07-28 Thread Ryan Gravener


// Get the saved list back
List contacts = contactManager.getUsers();
if (first  0) {
contacts = contacts.subList(first, first + count);
}
return contacts.iterator();
}

public IModel model(Object object)
{
 return new ContactModel((ContactInfoPOJO)object);
}

public int size()
{
return contactManager.getContacts().size();
}

 }


 Questions:
 1. Is calling dataprovider again the correct approach for updating the
 datatable? (See TODO 1 above) Can someone please suggest an alternate
 approach?
 2. How do I pass the Error Object to Page's Panel from DataProvider in case
 of Unsuccessful  save?(see TODo: 2 above)
 3. Will onError be called if I somehow plugin the error message to feedback
 Panel (See TODO: 3)



 Thanks for reading the post.
 --
 View this message in context:
 http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18698367.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


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




-- 
Ryan Gravener
http://twitter.com/ryangravener


Re: Best way to implement DataTable updatable via Ajax

2008-07-28 Thread nanotech
(contactPojo);

//TODO 2::: HOW? WHERE???
//If Save FAILED then GET ERROR MESSAGE


// Get the saved list back
List contacts = contactManager.getUsers();
if (first  0) {
contacts = contacts.subList(first, first + count);
}
return contacts.iterator();
}

public IModel model(Object object)
{
 return new ContactModel((ContactInfoPOJO)object);
}

public int size()
{
return contactManager.getContacts().size();
}

 }


 Questions:
 1. Is calling dataprovider again the correct approach for updating the
 datatable? (See TODO 1 above) Can someone please suggest an alternate
 approach?
 2. How do I pass the Error Object to Page's Panel from DataProvider in
 case
 of Unsuccessful  save?(see TODo: 2 above)
 3. Will onError be called if I somehow plugin the error message to
 feedback
 Panel (See TODO: 3)



 Thanks for reading the post.
 --
 View this message in context:
 http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18698367.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


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


 
 
 -- 
 Ryan Gravener
 http://twitter.com/ryangravener
 
 

-- 
View this message in context: 
http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18699753.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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



Re: Best way to implement DataTable updatable via Ajax

2008-07-28 Thread Ryan Gravener
 AddContactDataProvider(ContactInfoPOJO contactPojo)
 {
 this.contactPojo = contactPojo;
 contactManager = new JDBCContactManager();
 }
 
 public Iterator iterator(int first, int count)
 {
 // Save the Contact...
 contactManager.saveContact(contactPojo);
 
 //TODO 2::: HOW? WHERE???
 //If Save FAILED then GET ERROR MESSAGE
 
 
 // Get the saved list back
 List contacts = contactManager.getUsers();
 if (first  0) {
 contacts = contacts.subList(first, first + count);
 }
 return contacts.iterator();
 }
 
 public IModel model(Object object)
 {
  return new ContactModel((ContactInfoPOJO)object);
 }
 
 public int size()
 {
 return contactManager.getContacts().size();
 }
 
  }
 
 
  Questions:
  1. Is calling dataprovider again the correct approach for updating the
  datatable? (See TODO 1 above) Can someone please suggest an alternate
  approach?
  2. How do I pass the Error Object to Page's Panel from DataProvider in
  case
  of Unsuccessful  save?(see TODo: 2 above)
  3. Will onError be called if I somehow plugin the error message to
  feedback
  Panel (See TODO: 3)
 
 
 
  Thanks for reading the post.
  --
  View this message in context:
 
 http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18698367.html
  Sent from the Wicket - User mailing list archive at Nabble.com.
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
  --
  Ryan Gravener
  http://twitter.com/ryangravener
 
 

 --
 View this message in context:
 http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18699753.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


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




-- 
Ryan Gravener
http://twitter.com/ryangravener


Re: Best way to implement DataTable updatable via Ajax

2008-07-28 Thread nanotech
);

//TODO 2::: HOW? WHERE???
//If Save FAILED then GET ERROR MESSAGE



// Get the saved list back
List contacts = contactManager.getUsers();
if (first  0) {
contacts = contacts.subList(first, first + count);
}
return contacts.iterator();
}

public IModel model(Object object)
{
 return new ContactModel((ContactInfoPOJO)object);
}

public int size()
{
return contactManager.getContacts().size();
}

 }



 Questions:
 1. Is calling dataprovider again the correct approach for updating the
 datatable? (See TODO 1 above) Can someone please suggest an alternate
approach?
 2. How do I pass the Error Object to Page's Panel from DataProvider in case
 of Unsuccessful  save?(see TODo: 2 above)
 3. Will onError be called if I somehow plugin the error message to feedback
  Panel (See TODO: 3)
  



 Thanks for reading the post.

-- 
View this message in context: 
http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18702367.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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



Re: Best way to implement DataTable updatable via Ajax

2008-07-28 Thread Paul Logasa Bogen II

the inMethod DataGrid is excellent.
plb

nanotech wrote:

please help,Anyone?

---
Hi All,
 
I have a Save Form where user should be able to add/save new records and

should be able
to view feedback if there are any errors.
 
In short, When user loads up the page he sees a form and under it a

DataTable
which holds the deafault search results.

If he tries to add a record and Add is Successful then DataTable gets
updated via Ajax.
 
In case of Failure errors are reported on feedback panel.


Here is how I have implemented it:


 ===
 SaveContactPage.html
 ===
 


 div wicket:id=saveUserFeedback[Feedback-error messages etc.]/div
 form wicket:id=saveUserForm
table
  tr
tdFirst Name:/td
tdinput type=text wicket:id=firstName//td
  /tr
  tr
 tdLast Name:/td
 tdinput type=text wicket:id=lastName//td
  /tr
  tr
 tdinput type=submit wicket:id=saveContactButton
//td
   /tr
/table
 /form
 !--  Updatable container for search/add results  --
 div wicket:id=resultsContainer
table wicket:id=addResultsTable[Results for add/search
 Contacts]/table
 /div
 
 =

 SaveContactPage.java
 ==
 
 public class SaveContactPage extends WebPage

 {
// Hold reference to provider..
AddContactDataProvider provider;
// Hold refernce to FeedbackPanel...
FeedbackPanel saveUserFeedback;
//Hold refernece to updatable dataTable's container..
WebMarkupContainer resultsContainer;

public SaveContactPage()
{
add(saveUserFeedback = new
 FeedbackPanel(saveUserFeedback));
saveUserFeedback.setOutputMarkupId(true);

SaveUserForm userForm = new SaveUserForm(saveUserForm);
add(userForm);

// Get a new provider.
provider = new AddContactDataProvider((ContactInfoPOJO)

userForm.getModelObject());

// Get all the columns.
ListIColumn columns = createColumns();

resultsContainer = new
WebMarkupContainer(resultsContainer);
resultsContainer.add(new
DataTable(addResultsTable,columns,
provider, 10));

}

private ListIColumn createColumns()
{
ListIColumn columns = new ArrayList();
columns.add(new
PropertyColumn(this.getModel(),firstName));
columns.add(new PropertyColumn(this.getModel(),lastName));
}

 // Begin Save USER Form.
 private class SaveUserForm extends StatelessForm
 {
public SaveUserForm(String id)
{
super(id);
// Set Form's model
setModel(new CompoundPropertyModel(new ContactInfoPOJO()));
add(new TextField(firstName));
add(new TextField(lastName));
add(new AjaxFallbackButton(saveContactButton, this)
{
@Override
protected void onSubmit(AjaxRequestTarget
target,Form form)
{

// TODO 1: Is this Correct approach
// (i.e. calling the provider
// again to refresh the container)
// On Submitcall the provider again?


provider = new
AddContactDataProvider(form.getModelObject());

//Refresh the dataTable
target.addComponent(resultsContainer);

   // In case of Failure...Display the error
messages.

}

protected void onError(AjaxRequestTarget target,Form
form)
{   
// TODO 3: Show Errors...if any

// But Error happned in DataProvider...
// How do I get hold of Error Object Here...

target.addComponent(saveUserFeedback);
}

});

}
 }
 }


 ==
 AddContactDataProvider.java
 ==
 


 public class AddContactDataProvider extends SortableDataProvider
 {

private ContactInfoPOJO contactPojo;
private ContactManager contactManager;

public AddContactDataProvider(ContactInfoPOJO contactPojo)
{
this.contactPojo = contactPojo;
contactManager = new JDBCContactManager();
}

public Iterator iterator(int first, int count)
{
//