It's quite common to use embedded view in notes application but many of Lotus Notes developers don't find easy and efficient for web based application.I was going through Notes/Domino 6 and 7 Forum and found similar problem to one of the developer. She wanted to display a combobox (which refers to docs in a view on the database) to show only selected docs in an embedded view. e.g. category = "Finance".
http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllThreadedweb/b03202c47143f47b8525761e0067fe74?OpenDocument
She didn't got satisfactory answer so created another post saying , She wanted to refresh an embedded view based on the value of a combobox on the web.
http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllThreadedweb/66a335842154b86c8525761f0060073b?OpenDocument
So question is why should we use embedded view in web based application ? , Does it really required ? Can't we achieve similar functionality using ajax ? Don't you think we should break the trend which was started in Notes 5 era ?
Actually I never used embedded view in any of my web applications.I prefer AJAX instead of embedding view because it's fast and interacting well to the end user.
Let's have a look to simple requirement where you've to provide List box to the user where he can select multiple orders and can view their details. There could be many ways to achieve this but what could be the elegant way to make users WOW .. It's AJAX.
Here is the sample,
Here are simple steps to get rid of embedded views in web applications,
Step 1: Create a single column lookup view with following column formula,
orderNo + "|" + @Text(@DocumentUniqueID) |
Step 2: Write dbcolumn in combo box to populate order numbers.
Step 3: On "View Order" button click write JavaScript to retrieve Document UNID and pass them to AJAX function.
//-------------------------------------------------------------------------------- var orderID=""; var sep=""; for(i=0; i<=document.forms[0].OrderSelection.length-1; i++) { if ( document.forms[0].OrderSelection.options[i].selected ) { orderID = orderID +sep+document.forms[0].OrderSelection.options[i].value; sep="^"; } } displayOrder(orderID); //-------------------------------------------------------------------------------- function displayOrder(orderID){ url= location.href; tmpurl = url.substring(0,url.indexOf(".nsf")) agentUrl= tmpurl+".nsf"+"/displayOrder?OpenAgent" argsParam=trim(orderID); runAgent(agentUrl,argsParam); } //-------------------------------------------------------------------------------- function runAgent(agentUrl,argsParam) { req = false; if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } if (req ) { req.onreadystatechange = processReqChange; req.open("POST", agentUrl, true); req.send(argsParam); } } //---------------------------------------------------------------------------------- function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } //---------------------------------------------------------------------------------- function processReqChange() { if (req.readyState == 4) { if (req.status == 200) { document.getElementById("status").style.display="none" ; xmlStr=req.responseText if ( xmlStr == 0 ) { document.getElementById("status").innerHTML="Error in retrieving order"; return false; } else { document.getElementById("Contents").innerHTML=xmlStr; } } else {alert("There was a problem retrieving the XML data:\n" + req.statusText);} } } //----------------------------------------------------------------------------------- |
Step 5: In your Lotus Script agent use "Request_Content" CGI method to retrieve POST arguments. Write your business logic , Build custom HTML and return them using Print method.Don't forget to set content-type as per your logic ( Text, HTML or XML ). Code can be,
There are best ways to design Lotus Notes applications robust and as powerful as dot net and Java, Don't let others say "Notes systems are ugly".It's just our efforts which can lead Notes market as high as It was 10 years ago..