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]

Reply via email to