Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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.