We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Get record details based on UI action in UI page

ShubhamG8662710
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 @ShubhamG8662710 , 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 @ShubhamG8662710 , If you don't mind, can you share it as scripts in code sample? So that I will try to reproduce the issue? 

ShubhamG8662710
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.