gregor is right, you are trying to perform your update synchronously  
but your request is happening asynchronously.

A full explanation of your exact problem can be found in this post:
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/faca1575f306ba0f/3be719c021aa19bd

-jason

On Feb 6, 2009, at 6:10 AM, gregor wrote:

>
> Your problem looks like it's here:
>
> private void updateGrid1(GridPanel gridPanel, int cols, int rows) {
>     if (store != null) {
>         store.removeAll();
>     }
>     getData1(1);  <<<<<<<<<<<< PROBLEM
>
>     Object[][] data = null;
>
>     if(displayData1!= null) {     <<<<<<<<<PRBLEM: displayData not
> yet updated!!!!!!!!
>         data = getCompanyData(displayData1, 1);
>     }
>     else {
>         System.out.println("exception at update1();");
>         return;
>     }
>
> caused by:
>
>           // success
>           public void onSuccess(Object result) {
>            // Cast the result into the object that was sent
>            // This casts the random object into DataContainer
>            // Since the object is an array we use []
>            displayData1 = (DataContainer[]) result;  <<<<<<<< CAUSE:
> you set variable, you do not call grid update method
>
>           }
>          };
>
>
> what you need to do is rearrange your logic to call updateGrid1(..)
> from the async callback onSuccess(..) method. What is happening at the
> moment is that the grid update code is running at the same time the
> RPC call is executing over the wire, so ther is no new data in
> displayData1.
>
> regards
> gregor
>
>
> On Feb 6, 12:33 pm, ytbryan <ytbr...@gmail.com> wrote:
>> can someone help?
>>
>> below are my rpc request code.
>>
>> private void getData() {
>>
>>   AsyncCallback<Object> callback = new AsyncCallback<Object>() {
>>    // fail
>>    public void onFailure(Throwable ex) {
>>     RootPanel.get().add(new HTML(ex.toString()));
>>    }
>>    // success
>>    public void onSuccess(Object result) {
>>     // Cast the result into the object that was sent
>>     // This casts the random object into DataContainer
>>     // Since the object is an array we use []
>>     DataContainer[] displayData = (DataContainer[]) result;
>>    }
>>   };
>>
>>   callProvider.getData(callback);
>>  }
>>  private void getData1() {
>>            final int value1 = value;
>>
>>           AsyncCallback<Object> callback1 = new  
>> AsyncCallback<Object>()
>> {
>>            // fail
>>
>>            public void onFailure(Throwable ex) {
>>             RootPanel.get().add(new HTML(ex.toString()));
>>
>>            }
>>            // success
>>            public void onSuccess(Object result) {
>>             // Cast the result into the object that was sent
>>             // This casts the random object into DataContainer
>>             // Since the object is an array we use []
>>             displayData1 = (DataContainer[]) result;
>>
>>            }
>>           };
>>
>>           // remote procedure call to the server to get the data
>>           callProvider1.getData1(callback1);
>>
>>          }
>>
>> below is updategrid1 code which calls the getData1() code
>>
>> private void updateGrid1(GridPanel gridPanel, int cols, int rows) {
>>      if (store != null) {
>>          store.removeAll();
>>      }
>>      getData1(1);
>>
>>      Object[][] data = null;
>>
>>      if(displayData1!= null) {
>>          data = getCompanyData(displayData1, 1);
>>      }
>>      else {
>>          System.out.println("exception at update1();");
>>          return;
>>      }
>>
>>      RecordDef recordDef = new RecordDef(
>>              new FieldDef[]{
>>
>>                    new StringFieldDef("date"),
>>                    new IntegerFieldDef("opensource"),
>>                    new IntegerFieldDef("trial"),
>>                    new IntegerFieldDef("sales"),
>>                    new StringFieldDef("ostrial"),
>>                    new StringFieldDef("trialsale") ,
>>                    new StringFieldDef("ossale")
>>              }
>>      );
>>      ColumnConfig[] columns = new ColumnConfig[]{
>>              //column ID is company which is later used in
>> setAutoExpandColumn
>>              new ColumnConfig("Date", "date", 160, true, null,
>> "company"),
>>              new ColumnConfig("Open Source", "opensource", 35,true),
>>              new ColumnConfig("Trial", "trial", 45,true),
>>              new ColumnConfig("Sales", "sales", 65,true),
>>              new ColumnConfig("OS-Trial", "ostrial", 65),
>>              new ColumnConfig("Trial-Sale", "trialsale", 60, true),
>>              new ColumnConfig("OS-Sale", "ossale", 60, true)
>>      };
>>
>>      ColumnModel columnModel = new ColumnModel(columns);
>>
>>      MemoryProxy proxy = new MemoryProxy(data);
>>      ArrayReader reader = new ArrayReader(recordDef);
>>      store = new Store(proxy, reader);
>>      store.load();
>>
>>      gridPanel.reconfigure(store, columnModel);
>>
>>  }
>>
>> below is my button code which get trigger when pressed. and it has
>> listener that will call updategrid1()!!! please ignore those
>> unnecessary parameter that are unused.
>>
>>  ToolbarButton generateButton1 = new ToolbarButton("test", new
>> ButtonListenerAdapter() {
>>                       public void onClick(Button button,  
>> EventObject e) {
>>                           updateGrid1(gridPanel,  
>> cols.getValue().intValue(),
>> rows.getValue().intValue());
>>                       }
>>                   });
>>                   generateButton1.setIconCls("database-add-icon");
>>                   bottom.addButton(generateButton1);
>>
>> }
>>
>> can someone help!
>>
>> On Feb 6, 12:14 pm, ytbryan <ytbr...@gmail.com> wrote:
>>
>>> I just insert Window.alert("") into getdata1(); and i realised that
>>> the method is called but no window alert appears. i inserted  a
>>> println after onsuccess and onfailure and something is printed out.
>>
>>> basically, onsuccess and onfailure are skipped? how is it possible?
>>
>>> On Feb 6, 11:58 am, ytbryan <ytbr...@gmail.com> wrote:
>>
>>>> below is the code where i execute the rpc request. i create  
>>>> getdata()
>>>> and getdata1() to get execute different query. i am using two Async
>>>> object to make call. i am  not sure is it correct as i got error  
>>>> when
>>>> i use one. any help/advice is welcome and appreciated. :D
>>
>>>> private void getData() {
>>
>>>>   AsyncCallback<Object> callback = new AsyncCallback<Object>() {
>>>>    // fail
>>>>    public void onFailure(Throwable ex) {
>>>>     RootPanel.get().add(new HTML(ex.toString()));
>>>>    }
>>>>    // success
>>>>    public void onSuccess(Object result) {
>>>>     // Cast the result into the object that was sent
>>>>     // This casts the random object into DataContainer
>>>>     // Since the object is an array we use []
>>>>     DataContainer[] displayData = (DataContainer[]) result;
>>>>    }
>>>>   };
>>
>>>>   callProvider.getData(callback);
>>>>  }
>>>>  private void getData1() {
>>>>            final int value1 = value;
>>
>>>>           AsyncCallback<Object> callback1 = new  
>>>> AsyncCallback<Object>(){
>>>>            // fail
>>
>>>>            public void onFailure(Throwable ex) {
>>>>             RootPanel.get().add(new HTML(ex.toString()));
>>
>>>>            }
>>>>            // success
>>>>            public void onSuccess(Object result) {
>>>>             // Cast the result into the object that was sent
>>>>             // This casts the random object into DataContainer
>>>>             // Since the object is an array we use []
>>>>             displayData1 = (DataContainer[]) result;
>>
>>>>            }
>>>>           };
>>
>>>>           // remote procedure call to the server to get the data
>>>>           callProvider1.getData1(callback1);
>>
>>>>          }
>>
>>>> On Feb 6, 11:46 am, mon3y <darkside...@hotmail.com> wrote:
>>
>>>>> Hi
>>
>>>>> A code snippet would be nice, so we can see where you're going  
>>>>> wrong.
>>
>>>>> Also put a Window.alert(""), in your onFailure and onSuccess of  
>>>>> your
>>>>> second call to see what you get.
>>
>>>>> If it comes into the onFailure of your second call, there must be
>>>>> something wrong with the way you're calling the server side or  
>>>>> your
>>>>> interfaces.
>>
>>>>> If it comes in on your onSuccess, it must be a logic error, or
>>>>> something else pertaining to your client side code.
>>
>>>>> If you make the first call successful and you call the second  
>>>>> one the
>>>>> same way(logically) then there should be no issues.
>>
>>>>> :)
>>
>>>>> On Feb 6, 12:39 pm, ytbryan <ytbr...@gmail.com> wrote:
>>
>>>>>> Hi all,
>>>>>> i know gwt don support synchronous call and i read it somwhere  
>>>>>> that
>>>>>> there is actually don need to make rpc call synchronous.
>>
>>>>>> but i created an application with buttons like " save data"   
>>>>>> and "
>>>>>> display result "that will communicate to server by fetching  
>>>>>> data or
>>>>>> saving data.
>>
>>>>>> when the application starts, it will automatically display the  
>>>>>> first
>>>>>> result with its first rpc call. but when i click the display  
>>>>>> second
>>>>>> result's button....... it doesn't work anymore. any subsequent  
>>>>>> rpc
>>>>>> call after the first one don't work.
>>
>>>>>> what is wrong here? and what am i missing? can someone advice  
>>>>>> me? the
>>>>>> usual rpc example online only show how to make one rpc call. is  
>>>>>> there
>>>>>> a way to make multiple calls that do different task? thank you  
>>>>>> for
>>>>>> your time in viewing this post.
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to