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.

Need help in passing value from UI Page to UI action?

saint
Tera Expert

Hi Experts,

 

I have a scenarios where,

List choice UI action is on a location table, when I select multiple locations and click the UI action, a record is created for each selected location in one of the custom table, I have achieved this functionality.

Now the further requirement is when user selects the locations and clicks the UI action, he/she should also be able to enter a date which will then be populated in a date field on the new record created in custom table. Let me know if I can solve this with any method other than below which I'm trying.

 

I am using a UI page to show a popup of date field for user input, but now I cannot use my script in UI action itself to pass the values of selected locations. What I want to achive now is  pass the values of selected locations from UI page to UI action to process further or ( pass it from UI page to its processing script and then to SI for updation )

 

Please let me know if any more info or inputs are needed. 

 

Thanks 

1 ACCEPTED SOLUTION

@saint 

can you try this?

    modal.setPreference('sysparm_entity',selected_entities);

Method 1:

 <input type="hidden" name="record_sysIds" id="record_sysIds" value="${sysparm_entity}"/>

Method 2:

<g:evaluate var="jvar_id" expression="RP.getWindowProperties().sysparm_entity"/>

 <input type="hidden" name="record_sysIds" id="record_sysIds" value="${jvar_id}"/>

 

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

15 REPLIES 15

saint
Tera Expert

Hi All, ading my code below, **please reply to the original post as I may need to edit or delete this reply in future.

 

UI Action SCRIPT:

 

function launch() {

    var selected_entities = g_list.getChecked(); // I want to pass this value till SI to create new records 
***NEED HELP IN THIS****CHECK ABOVE COMMENT****
    var modal = new GlideDialogWindow('sn_risk_advanced_scopeduedate');
    modal.setTitle('Select Due Date');
    modal.setPreference('sysparm_view', 'default');
                modal.setPreference('entity',selected_entities+'');
    modal.render();
}

 

UI Page HTML:

<?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:ui_form id="scope">
<table>
    <tr>
        <td>Due date</td>
        <td><input type="date" id="date_id" name="date"/></td>
                                <td><input type="hidden" id="jvar_answer" name="jvar_answer" value=""/></td>
    </tr>
    <tr>
                                <td><input type="reset" onClick="onReset()"/></td>
        <td><input type="submit" onClick="onSubmit()"/></td>
    </tr>
</table>
</g:ui_form>

</j:jelly>

 

UI Page Client Script:

function onReset() {
                
    document.getElementById("scope").reset();
}

function onSubmit() {
                alert("test"); // this pops ups in testing
    gel("jvar_answer").value = g_list.getChecked(); // working on  this to see if I can pass value
                
}

 

UI Page PROCESSING SCRIPT:

alert(jvar_answer);
var ga = new GlideAjax('sn_risk_advanced.LRAUtils');
ga.addParam('sysparm_name', 'createScopeForEntity');
ga.addParam('sysparm_selected_entities', jvar_answer);
ga.addParam('sysparm_due_date', date);
ga.getXML(doAfterServerResponse);
// }


/*Throws error alert when entity scope already exists*/
function doAfterServerResponse(response) {
    var ans = response.responseXML.documentElement.getAttribute("answer");
    if (ans > 0)
        alert("Few records could not be added as record with same risk assessment methodology and entity already exists");
    g_navigation.reloadWindow();
}

 

Script Include:

createScopeForEntity: function() {
        var methodology;
        var due_date;
        var selected_entities;
        var entities;
        var count = 0;
        var en;

        /*fetches the methodology where state is published and assesment type is LRA*/
        var gr1 = new GlideRecord('sn_risk_advanced_risk_assessment_methodology');
        gr1.addEncodedQuery('state=2^u_assessment_type=0');
        gr1.query();
        while (gr1.next()) {
            methodology = gr1.getValue('sys_id');
        }
     

        /*uses the ajax call from UI action to pass the selected entities */
        due_date = this.getParameter('sysparm_due_date');
        selected_entities = this.getParameter('sysparm_selected_entities');
        entities = selected_entities.split(',');
      

        /*loops the selected entities*/
        for (var i = 0; i < entities.length; i++) {
            en = entities[i];

            /*checks if the entity-methodology scope already exists*/
            var gr2 = new GlideRecord('sn_risk_advanced_risk_assessment_scope');
            gr2.addQuery('entity', en);
            gr2.query();
            while (gr2.next()) {
                count++;
            }
            /*creates the new scope for entity-methodology*/
            var gr = new GlideRecord('sn_risk_advanced_risk_assessment_scope');
            gr.initialize();
            gr.setValue('risk_assessment_methodology', methodology);
            gr.setValue('entity', en);
            gr.setValue('u_due_date', due_date)
            gr.insert();
        }
        /*return if relationship exists*/
        if (count > 0) {
            return count;
        }
    }