Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

Able to select more than one results using Radio button in Grid

SA-57218

Summary



When using pagination to display multiple rows in a page, radio buttons selection does not work across pages in the repeat grid.


Error Messages



Not Applicable


Steps to Reproduce

  1. Create a repeating grid with page list as the source
  2. Include the pyRowSelected radio button as one of the columns in the grid.
  3. Select a row by clicking the radio button in one page.
  4. Navigate to the next page or any other page.
  5. Select a row in that page.


Root Cause



Repeat grid does not select and clear the values in the Clipboard. Hence, when pagination occurs, it may not deselect any row. The radio buttons are cleared by the client and values do not propagate to the Clipboard.


Resolution



Perform the following local-change:

Override the setOtherRadioToFalse JavaScript (JS) function provided by the repeating grid. Invoke an activity in the server to maintain the state of the radio buttons.

1. Include the following snippet in the UserWorkForm.

<script> 
pega.u.d.attachOnload(function() { 
if (pega.ui && pega.ui.grid) { 
pega.ui.grid.prototype.setOtherRadioToFalse = function(element, event) { 
var currentName = element.name; 
if (typeof(element.id) == "undefined" || element.id == "") 
element.id = currentName.replace(/[\d]/g, ""); 
var radioButtonsList = pega.util.Dom.getElementsById(element.id, this.gridDiv); 
var len = radioButtonsList.length
for (var i = 0; i < len; i++) { 
if (radioButtonsList[i]) { 
if (radioButtonsList[i].name != currentName) { 
radioButtonsList[i].checked = false; 



var currentRowRef = pega.ui.property.toReference(element.name); 
// console.log(currentRowRef); 
var activityUrl = SafeURL_createFromURL(pega.u.d.url); 
activityUrl.put("pyActivity", "@baseclass.SetOtherRadioToFalse"); 
activityUrl.put("propRef", currentRowRef);  pega.u.d.asyncRequest("POST", activityUrl); 
}; 

}, true); 
</script>


2. Create an activity @baseclass.SetOtherRadioToFalse on the server with a Java step. Add the below code in this step.

String propertyReference = tools.getParamValue("propRef"); 

// Get the property name 
String propertyName = propertyReference.substring(propertyReference.lastIndexOf('.') + 1); 

// Get the page list name 
String rowPageRef = propertyReference.substring(0, propertyReference.lastIndexOf('.')); 
String pageListRef = rowPageRef.substring(0, propertyReference.lastIndexOf('(')); 
int rowNumber = Integer.parseInt(rowPageRef.substring(propertyReference.lastIndexOf('(') + 1, propertyReference.lastIndexOf(')'))); 

// oLog.error(pageListRef + " | " + rowNumber + " | " + propertyName); 
Iterator plIterator = tools.getProperty(pageListRef).iterator(); 
while(plIterator.hasNext()) { 
ClipboardPage rowPage = ((ClipboardProperty) plIterator.next()).getPageValue(); 

if (rowPage.getReference().equals(rowPageRef)) { 
rowPage.getProperty(propertyName).setValue(true); 
} else { 
rowPage.getProperty(propertyName).setValue(false); 




 

Published July 23, 2018 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us