Get record details based on UI action in UI page

Shubham Gagneja
Tera Guru

Hello,
I am trying to get record details based on my custom table form in workspace. I have 4 fields on my form, last name, first name, gender and dob. If a user enters value, there is a ui action checks the user info from my custom table based on the field value and opens a ui page displaying the records. I created the ui page and i did call it and i can see the ui page as a modal but info is not there. 
Can someone help me with the logic?

6 REPLIES 6

GopikaP
Mega Sage

Hi @Shubham Gagneja , can you share the ui action and ui page script if possible? 

 

Yeah sharing

My ui page jelly! 

ShubhamGagneja_0-1742907931221.png

 

processing script

ShubhamGagneja_1-1742907931155.png

 

ui action
Workspace script

ShubhamGagneja_2-1742907931128.png

 

right now when i click my ui action modal pops up without records like this

ShubhamGagneja_3-1742907931152.png

 

 

Hi @Shubham Gagneja , If you don't mind, can you share it as scripts in code sample? So that I will try to reproduce the issue? 

Shubham Gagneja
Tera Guru

Sure @GopikaP 

Ui action workspace client script

function onClick(g_form) {


    var uipageID = "a60cf5ac3b286a101fbcb0d964e45adf";
    g_modal.showFrame({
        //url: '/ui_page.do?sys_id=' + uipageID,  '&' + queryString,
        url: '/ui_page.do?sys_id=' + uipageID,
        title: 'Contender Search Results',
        size: 'xl',
        height: 500
    });
    /*var lastName = g_form.getValue('last_name');
        var firstName = g_form.getValue('first_name');
        var middleName = g_form.getValue('middle_name');
        var dob = g_form.getValue('date_of_birth');
        var gender = g_form.getValue('gender');
if (!lastName && !firstName && !middleName && !dob && !gender) {
        g_form.addErrorMessage("Please enter at least one field before searching.");
        return;
       

        // Build query parameters for passing to the UI Page
        var params = {
            last_name: lastName || '',
            first_name: firstName || '',
            middle_name: middleName || '',
            dob: dob || '',
            gender: gender || ''
        };

        // Convert params object to URL query string
        var queryString = Object.keys(params)
            .map(key => key + '=' + encodeURIComponent(params[key]))
            .join('&');*/



}


Ui page jelly
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
    <g:evaluate var="jvar_searchParams">
        var lastName = gel('last_name');
        var firstName = gel('first_name');
        var middleName = gel('middle_name');
        var dob = gel('dob');
        var gender = gel('gender');
    </g:evaluate>

    <div class="container">
        <h2>Contender Search Results</h2>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Date of Birth</th>
                    <th>Gender</th>
                    <th>License</th>
                    <th>Status</th>
                    <th>Address</th>
                </tr>
            </thead>
            <tbody>
                <g:forEach var="contender" items="${jvar_searchResults}">
                    <tr>
                        <td>${contender.name}</td>
                        <td>${contender.dob}</td>
                        <td>${contender.gender}</td>
                        <td>${contender.license}</td>
                        <td>${contender.status}</td>
                        <td>${contender.address}</td>
                    </tr>
                </g:forEach>
            </tbody>
        </table>
    </div>
</j:jelly>


ui page processing script
/*(function process(RP) { // Changed to use RP object
    var lastName = RP.getParameterValue("last_name") || '';
    var firstName = RP.getParameterValue("first_name") || '';
    var middleName = RP.getParameterValue("middle_name") || '';
    var dob = RP.getParameterValue("dob") || '';
    var gender = RP.getParameterValue("gender") || '';

    var contenders = [];

    var userGR = new GlideRecord('x_ccnul_csa_mto_driver_profile');
    userGR.addEncodedQuery("active=true");

    if (lastName) userGR.addQuery("last_name", "CONTAINS", lastName);
    if (firstName) userGR.addQuery("first_name", "CONTAINS", firstName);
    if (middleName) userGR.addQuery("middle_name", "CONTAINS", middleName);
    if (dob) userGR.addQuery("date_of_birth", dob);
    if (gender) userGR.addQuery("gender", gender);

    userGR.query();

    while (userGR.next()) {
        contenders.push({
            name: userGR.getValue("last_name") + ", " + userGR.getValue("first_name"),
            dob: userGR.getValue("date_of_birth"),
            gender: userGR.getValue("gender"),
            license: userGR.getValue("license_number"),
            status: userGR.getValue("status"),
            address: userGR.getValue("address")
        });
    }

    RP.setParameterValue('searchResults', contenders); // Set the searchResults parameter
})(RP); // pass RP object to the function.*/
Ui page client script is empty for now.