Hi Ryan Posted code here..

http://pastebin.org/58032
http://pastebin.org/58035

Thanks,
RG


Ryan Gravener-3 wrote:
> 
> If you post your code on pastebin i'll take a look at it.  As for the
> generic issue of updating a datatable.  I would update it in your onsubmit
> method, add it to the target.  I wouldn't have any save calls in my
> dataprovider, only logic to fetch results.
> 
> On Mon, Jul 28, 2008 at 8:52 PM, nanotech <[EMAIL PROTECTED]> wrote:
> 
>>
>> Hi Paul,
>>
>> Sorry could not understand your answer. Can you please elaborate?
>>
>> RG
>>
>>
>> Paul Logasa Bogen II wrote:
>> >
>> > 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>
>> >>              <td>First Name:</td>
>> >>              <td><input type="text" wicket:id="firstName"/></td>
>> >>               </tr>
>> >>               <tr>
>> >>                  <td>Last Name:</td>
>> >>                  <td><input type="text" wicket:id="lastName"/></td>
>> >>               </tr>
>> >>               <tr>
>> >>                  <td><input 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.
>> >>                 List<IColumn> columns = createColumns();
>> >>
>> >>                 resultsContainer = new
>> >> WebMarkupContainer("resultsContainer");
>> >>                 resultsContainer.add(new
>> >> DataTable("addResultsTable",columns,
>> >>                                                  provider, 10));
>> >>
>> >>         }
>> >>
>> >>         private List<IColumn> createColumns()
>> >>         {
>> >>                 List<IColumn> 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 Submit....call 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)
>> >>     {
>> >>         // 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.
>> >>
>> >>
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18702905.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-tp18698367p18703080.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]

Reply via email to