on 06-18-2009 8:25 AM
Hi all
I have an iBrowser with the initial update set to false. When the page loads, the first applet (an iGrid) returns an actual result set, and based on this I feed the iBrowser applet (the one with the false initial update). I then update this iBrowser with the updateBrowser(true) command.
My problem is that this browser does not display the new data. I am running the latest version of Java and if I click on it (or setSelectedItem), it suddenly shows data (as if it is removing a cover which is over the applet). On an older version of Java, it does not help to click on it, however, if the page is opened the first time, it works. But if I refresh the page, it does not work.
They are running:
IE 7
SAP MII V 11.5.3 b66
Client PC's have either
Java 1.4.2_07 or
Java 1.6.0_13-b03 or
Java 1.6.0_04
Any help on this?
Regards
Edited by: Antoine Snyman on Jun 18, 2009 9:28 AM
Are you using a selection event on the igrid to populate the ibrowser? If you not, then why don't you modfiy the query of the ibrowser to provide the correct data from the start instead of trying to force feed it? This would provide a faster page load and a better user experience.
Jamie
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jeremy
Nice to hear from you again. The client is using a third party application for the security model. Thus, I have to get the authorized "areas" first, and then populate the browser according to the auth awarded to him.
I have done this many times (even at this specific client), but this time it doesn't work for some strange reason.
Thought someone else might have experienced something similar.
Kishore, I am using UpdateEvent on the igrid to fire off the function which handles the browser update. FirstUpdateEvent doesn't work either. Neither does refresh or updating the browser 10 times in 1 function...
Regards
Hi Antoine (Jeremy this time, not my esteemed colleague Jamie)...
Sounds to me like a job perfect for wrapping the client side efforts of what you are doing today into a BLS transaction. Take the security query efforts from the iGrid and put them into a transaction that then uses the results to impact the iBrowser query, returning this resultset to the iBrowser applet as an Xacute Query.
By moving this onto the server side the iBrowser will be independent and in complete javascriptless control of its own destiny - don't forget to enable the initial update
Regards,
Jeremy
I have a firstLoad function which ensures that all applets are loaded. Once all applets are loaded, ValidateUser() will be called.
function ValidateUser()
{
var AuthorisedAreasGridObj = AuthorisedAreas.getGridObject();
var rAreas = "IN (";
for(var row = 1; row <= AuthorisedAreasGridObj.getRowCount(); row++)
{
if(row == 1)
{
rAreas = rAreas + "'" + AuthorisedAreasGridObj.getCellValue(row, 1) + "'";
}
else
{
rAreas = rAreas + ", " + "'" + AuthorisedAreasGridObj.getCellValue(row, 1) + "'";
}
}
rAreas = rAreas + ")";
Areas.getQueryObject().setParam(1, rAreas);
Areas.updateBrowser(true);
}
Applet Code:
<APPLET NAME="AuthorisedAreas" WIDTH="0" HEIGHT="0" CODE="iGrid" CODEBASE="/Illuminator/Classes" ARCHIVE="illum8.zip" MAYSCRIPT>
<PARAM NAME="QueryTemplate" VALUE="MAC/xacQuery_insert_update_authorisedareas">
<PARAM NAME="DisplayTemplate" VALUE="MAC/iGrid">
<param name="Param.1" value="emea\{IllumLoginName}" />
<param name="UpdateEvent" value="firstLoad" />
</APPLET>
and...
<APPLET NAME="Areas" WIDTH="220" HEIGHT="150" ALIGN="absmiddle" CODE="iBrowser" CODEBASE="/Illuminator/Classes" ARCHIVE="illum8.zip" MAYSCRIPT>
<PARAM NAME="QueryTemplate" VALUE="MAC/sqlQuery_areas">
<PARAM NAME="DisplayTemplate" VALUE="MAC/disiBrowser_areas">
<PARAM NAME="CreationEvent" VALUE="firstLoad">
<param name="InitialUpdate" value="false" />
<PARAM NAME="SelectionEvent" VALUE="UpdateStreams">
</APPLET>
Tough to speculate merely based upon forum posts, but putting some alerts in the functions tied to your applet events would help you with some visibility as to what's going on, as well as temporarily adding the following lines to the involved applets (and monitoring the java console as things are executing on the page):
<PARAM NAME="Trace" VALUE="true">
Assuming you've used a similar approach in the past, or in other situations with this MAC project, the optimal solution is to really eliminate the applet dependencies you have strung together on the client side and make them execute on the server side. Then the applet just fires it's query and is good to go.
You could be running into a timing issue, you could put an alert in your code for testing purposes to slow it down. I not sure what data is returned from your query but it appears that DataLinkMode makes a difference when doing this if your are returning mulitple columns. Try using a igrid instead of the ibrowser and see what happens.
As Jeremy mention this logic could easily be pur into a transaction.
Jamie
Hi,
May I know on which event you are making updateBrowser(true)?
Is it with the FirstUpdateEvent or with the UpdateEvent?
Hope with these events it works fine. Firstupdate event calls the funtion only once when the applet is initialized where as the update event calls whenever the data is updated.
just play around with those functions you can get you exact result.
I checked this in 11.5 build 3 with the java 1.4.2_15. It works fine for me. May be i have created some simplest queries for the same if you expalin the exact scenario, I can check it out here.
Regards,
Kishore
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
6 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.