Accessing Prompt Controls in Cognos 8.4 with Javascript
Posted by Darren Nelson on Wed, Apr 15, 2009
Hi All,
During a recent client engagement, we came across an issue that some of you may have encountered: trying to access prompt controls at runtime.
In the past a Report Studio author could write something like this:
var x = getFormWarpRequest();
var y = x.elements["my control name"];
Of course, this is no longer the case in Cognos 8.4. Instead, the prompt control IDs are system-generated and obfuscated at runtime. In order to access the prompt controls now, you have to first obtain the obfuscated value, and then locate the control.
I've written a piece of code that seems to let me find the prompt control. I hope it helps your efforts!
In brief:
var y = searchPrompts("My prompt name");
<SCRIPT> function searchPrompts(promptName) { var SpotOnTargetControl = G_PM_THIS_.getControlByName(promptName); var SpotOnPCType=SpotOnTargetControl._type_; var SpotOnPCID = SpotOnTargetControl._id_; var SpotOnPCPrefix = ""; switch(SpotOnPCType) { case "cognos.Prompt.Control.SelectValue": SpotOnPCPrefix="PRMT_SV_"; break; case "cognos.Prompt.Control.Text": SpotOnPCPrefix="PRMT_"; break; case "cognos.Prompt.Control.DateTime": SpotOnPCPrefix="PRMT_"; break; case "cognos.Prompt.Control.Date": SpotOnPCPrefix="PRMT_"; break; } var SpotOnFW = getFormWarpRequest(); var SpotOnEL = SpotOnPCPrefix+SpotOnPCID; var SpotOnTargetElement = document.getElementById(SpotOnEL); return SpotOnTargetElement; } </SCRIPT> <A onclick='searchPrompts("TEST_LIST")' href="#">Get List named:TEST_LIST</A><BR> <A onclick='searchPrompts("TEST_TEXT")' href="#">Get Text named:TEST_TEXT</A><BR> <A onclick='searchPrompts("TEST_CALENDAR")' href="#">Get CALENDAR named:TEST_CALENDAR</A>