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.

Populate UI page with User name field value

Shiva Kumar8
Kilo Guru

Hi Community,

I'm using a UI page on user record, the UI page has a field called user name, when the UI page is opened I want to populate the username with the current user record name. any help in script.

Thanks in advance.

Please find the attached screen shot for reference

1 ACCEPTED SOLUTION

now it should work

we are sending userFullName from UI action; so update as this

<g:evaluate var="jvar_name" expression="RP.getWindowProperties().get('userFullName')" />
                
                <p>full name ${jvar_name}</p>

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

View solution in original post

20 REPLIES 20

Hi,

from UI action send the record sysId

I have highlighted the changes in bold; you need to use body onload function to set the value in <g:ui_reference>

function addConsumable(){
    var dialog = new GlideDialogWindow("user_consumable_dialog");
    dialog.setTitle(getMessage("Add Consumables"));
    dialog.setPreference("sysId", g_form.getUniqueValue());
    dialog.setPreference("username",g_form.getValue('name'));
    dialog.setPreference("stockroom",g_form.getValue('stockroom'));
    dialog.setPreference("model",g_form.getValue('model'));
    dialog.setPreference("model_category",g_form.getValue('model_category'));
    dialog.setPreference("catalog_category",g_form.getValue('catalog_category'));
    dialog.setPreference("installDate",g_form.getValue('installDate'));
    dialog.setPreference("Consumablequantity",g_form.getValue('Consumablequantity'));
    dialog.setWidth("500");
    dialog.render();

}

Update 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>
        <html>
            <body onload="setDefaultValue();">
                
                <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().get('sysId')" />
                <input type="hidden" name="userSysId" id="userSysId" value="${jvar_sysId}"/>
                
                <g:evaluate var="jvar_name" expression="RP.getWindowProperties().get('username')" />
                <input type="hidden" name="userFullName" id="userFullName" value="${jvar_name}"/>
                
                <input type="hidden" name="start_error" id="start_error" value="false" />
                <input type="hidden" name="end_error" id="end_error" value="false" />        
                <!--<j:set var="jvar_name" value="${RP.getWindowProperties().get('user_name')}" />-->
                <style>
                    select {
                    width: 270px;
                    margin: 5px;
                    height: 30px;
                    }
                </style>
                <table style="border-spacing:0 5px">
                    <tr>
                        <g:evaluate  var="jvar_request" jelly="true">
                            var UserName = jelly.jvar_name;
                            var gr = new GlideRecord("sys_user");
                            gr.addQuery('sys_id' current_sys_id);    
                            gr.query();
                            gr.next();
                            gr;
                        </g:evaluate>
                        <td>User name:</td>
                        <j:if test="${gr.sys_id !=''}">
                            <td><g:ui_reference name="user" id="user" completer="AJAXTableCompleter"/></td>
                        </j:if>
                    </tr>
                    <tr>
                        <td>Stockroom:</td>
                        <td> <g:ui_reference name="stockroom" id="stockroom" table="alm_stockroom" completer="AJAXTableCompleter" onchange="fetchModels()"/></td>
                    </tr>
                    <tr>
                        <td>Model:</td>
                        <td>
                            <g:ui_reference name="model" id="model" table="alm_consumable"/></td>
                    </tr>
                    <tr>
                        <td>Model category:</td>
                        <td> <g:ui_reference name="model_category" id="modelCategory" table="cmdb_model_category" query="sys_created_by!=system^name=consumable"/></td>
                    </tr>
                    <tr>
                        <g:evaluate jelly="true" object="true">
                            var rec = new GlideRecord('sys_choice');
                            rec.addQuery('table', 'alm_consumable');
                            rec.addQuery('element', 'u_catalog_category');
                            rec.query();
                            rec;
                        </g:evaluate>
                        <td>Catalog category: </td>
                        <td> <select name="catalog_category" id="catalogCategory">
                            <option value="">-- Select --</option>
                            <j:while test="${rec.next()}">
                                <option value="${rec.value}">${rec.label}</option>
                            </j:while>
                            </select></td>
                    </tr>
                    <tr>
                        <td>Installed date:</td>
                        <td> <g:ui_date_time name="installDate" id="installDate" table='alm_comsumable' field='install_date'/></td>
                    </tr>
                    <tr>
                        <td>Quantity:</td>
                        <td> <input type="text" id="quantity" name="Consumablequantity"
                                    table="alm_consumable" /></td>
                        <!--<g:ui_date_time name="Quantity" id="Quantity" table='alm_comsumable' displayValue="$[quantity]"/>-->
                    </tr>                                                    </table>

                <br/>
                <tr>
                    <td><g:dialog_button id="cancel" title="${gs.getMessage('Cancel')}" type="${jvar_cancel_type}"
                                         style_class="btn btn-default" onclick="return cancelConvert();" style="min-width: 5em;" >${gs.getMessage('Cancel')}</g:dialog_button>

                        <g:dialog_button id="submit_for_review" title="${gs.getMessage('submitting')}"
                                         type="${jvar_cancel_type}" style_class="btn btn-primary" onclick="return cancelSubmit();"
                                         style="min-width: 5em;">&#160;${gs.getMessage('Submit')}</g:dialog_button></td>
                </tr>
            </body>
        </html>
    </g:ui_form>
</j:jelly>

Client Script:

function setDefaultValue(){
	gel('user').value = gel('userSysId').value;
	gel('sys_display.user').value = gel('userFullName').value;
	gel('userLINKreplace').style.display = "";
}

Regards
Ankur

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

Hi Ankur,

Thanks for the response,

I tried the solution you provided, but the reference field was lost(please find the screenshot)

I also used the client script provided by you.

the HTML code used is

<?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>
		<html>
			<body onload="setDefaultValue();">
                
                <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().get('sysId')" />
                <input type="hidden" name="userSysId" id="userSysId" value="${jvar_sysId}"/>
                
                <g:evaluate var="jvar_name" expression="RP.getWindowProperties().get('username')" />
                <input type="hidden" name="userFullName" id="userFullName" value="${jvar_name}"/>
						  
				<input type="hidden" name="hold_or_submit" id="hold_or_submit" value="" />
				<input type="hidden" name="start_error" id="start_error" value="false" />
				<input type="hidden" name="end_error" id="end_error" value="false" />		
				<style>
    select {
        width: 270px;
        margin: 5px;
	    height: 30px;
    }
</style>
				<table style="border-spacing:0 5px">
					<tr> 
				<g:evaluate  var="jvar_request" jelly="true">
							var UserName = jelly.jvar_name;
							var gr = new GlideRecord("sys_user");
                            gr.addQuery('sys_id' current_sys_id);	
							gr.query();
							gr.next();
							gr;
  </g:evaluate>
						<td>User name:</td>
					<j:if test="${gr.sys_id !=''}">
                            <td><g:ui_reference name="user" id="user" completer="AJAXTableCompleter"/></td>
						</j:if>
					</tr>
					<tr>
						<td>Stockroom:</td>
						<td> <g:ui_reference name="stockroom" id="stockroom" table="alm_stockroom" completer="AJAXTableCompleter" onchange="fetchModels()"/></td>
					</tr>
					<tr>
						<td>Model:</td>
						<td>
							<g:ui_reference name="model" id="model" table="alm_consumable"/></td>
					</tr>
					<tr>
						<td>Model category:</td>
						<td> <g:ui_reference name="model_category" id="modelCategory" table="cmdb_model_category" query="sys_created_by!=system^name=consumable"/></td>
					</tr>
					<tr>
						<g:evaluate jelly="true" object="true">
						var rec = new GlideRecord('sys_choice');
						rec.addQuery('table', 'alm_consumable');
						rec.addQuery('element', 'u_catalog_category');
						rec.query();
						rec;
						</g:evaluate>
						<td>Catalog category: </td>
							<td> <select name="catalog_category" id="catalogCategory">
							<option value="">-- Select --</option>
								<j:while test="${rec.next()}">
							<option value="${rec.value}">${rec.label}</option>
							</j:while>
								</select></td>
					</tr>
					<tr>
						<td>Installed date:</td>
						<td> <g:ui_date_time name="installDate" id="installDate" table='alm_comsumable' field='install_date'/></td>
					</tr>
					<tr>
						<td>Quantity:</td>
						<td> <input type="text" id="quantity" name="Consumablequantity"
									table="alm_consumable" /></td>
						<!--<g:ui_date_time name="Quantity" id="Quantity" table='alm_comsumable' displayValue="$[quantity]"/>-->
					</tr>													</table>

				<br/>
			<tr>
				<td><g:dialog_button id="cancel" title="${gs.getMessage('Cancel')}" type="${jvar_cancel_type}"
										 style_class="btn btn-default" onclick="return cancelConvert();" style="min-width: 5em;" >${gs.getMessage('Cancel')}</g:dialog_button>

				<g:dialog_button id="submit_for_review" title="${gs.getMessage('submitting')}"
										 type="${jvar_cancel_type}" style_class="btn btn-primary" onclick="return cancelSubmit();"
									 style="min-width: 5em;">&#160;${gs.getMessage('Submit')}</g:dialog_button></td>
					</tr>
			</body>
		</html>
	</g:ui_form>
</j:jelly>

The Ui action code is

function addConsumable(){
	var dialog = new GlideDialogWindow("user_consumable_dialog");
	dialog.setTitle(getMessage("Add Consumables"));
	dialog.setPreference("sysId", g_form.getUniqueValue());
	dialog.setPreference("userFullName",g_form.getValue('name'));
	dialog.setPreference("stockroom",g_form.getValue('stockroom'));
	dialog.setPreference("model",g_form.getValue('model'));
	dialog.setPreference("model_category",g_form.getValue('model_category'));
	dialog.setPreference("catalog_category",g_form.getValue('catalog_category'));
	dialog.setPreference("installDate",g_form.getValue('installDate'));
	dialog.setPreference("Consumablequantity",g_form.getValue('Consumablequantity'));
	dialog.setWidth("500");
	dialog.render();
	
}

Hi Ankur,

Any update on this?

Thanks.

Hi,

Similar solution has worked for me in past.

try this in HTML; no need to query sys_user table

<?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>
		<html>
			<body onload="setDefaultValue();">

				<g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().get('sysId')" />
				<input type="hidden" name="userSysId" id="userSysId" value="${jvar_sysId}"/>

				<g:evaluate var="jvar_name" expression="RP.getWindowProperties().get('username')" />
				<input type="hidden" name="userFullName" id="userFullName" value="${jvar_name}"/>

				<input type="hidden" name="start_error" id="start_error" value="false" />
				<input type="hidden" name="end_error" id="end_error" value="false" />        
				<!--<j:set var="jvar_name" value="${RP.getWindowProperties().get('user_name')}" />-->
				<style>
					select {
					width: 270px;
					margin: 5px;
					height: 30px;
					}
				</style>
				<table style="border-spacing:0 5px">
					<tr>
						<td>User name:</td>
						<td><g:ui_reference name="user" id="user" completer="AJAXTableCompleter"/></td>
					</tr>
					<tr>
						<td>Stockroom:</td>
						<td> <g:ui_reference name="stockroom" id="stockroom" table="alm_stockroom" completer="AJAXTableCompleter" onchange="fetchModels()"/></td>
					</tr>
					<tr>
						<td>Model:</td>
						<td>
							<g:ui_reference name="model" id="model" table="alm_consumable"/></td>
					</tr>
					<tr>
						<td>Model category:</td>
						<td> <g:ui_reference name="model_category" id="modelCategory" table="cmdb_model_category" query="sys_created_by!=system^name=consumable"/></td>
					</tr>
					<tr>
						<g:evaluate jelly="true" object="true">
							var rec = new GlideRecord('sys_choice');
							rec.addQuery('table', 'alm_consumable');
							rec.addQuery('element', 'u_catalog_category');
							rec.query();
							rec;
						</g:evaluate>
						<td>Catalog category: </td>
						<td> <select name="catalog_category" id="catalogCategory">
							<option value="">-- Select --</option>
							<j:while test="${rec.next()}">
								<option value="${rec.value}">${rec.label}</option>
							</j:while>
							</select></td>
					</tr>
					<tr>
						<td>Installed date:</td>
						<td> <g:ui_date_time name="installDate" id="installDate" table='alm_comsumable' field='install_date'/></td>
					</tr>
					<tr>
						<td>Quantity:</td>
						<td> <input type="text" id="quantity" name="Consumablequantity"
									table="alm_consumable" /></td>
						<!--<g:ui_date_time name="Quantity" id="Quantity" table='alm_comsumable' displayValue="$[quantity]"/>-->
					</tr>                                                    </table>

				<br/>
				<tr>
					<td><g:dialog_button id="cancel" title="${gs.getMessage('Cancel')}" type="${jvar_cancel_type}"
										 style_class="btn btn-default" onclick="return cancelConvert();" style="min-width: 5em;" >${gs.getMessage('Cancel')}</g:dialog_button>

						<g:dialog_button id="submit_for_review" title="${gs.getMessage('submitting')}"
										 type="${jvar_cancel_type}" style_class="btn btn-primary" onclick="return cancelSubmit();"
										 style="min-width: 5em;">&#160;${gs.getMessage('Submit')}</g:dialog_button></td>
				</tr>
			</body>
		</html>
	</g:ui_form>
</j:jelly>

Regards
Ankur

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

Hi Ankur,

If I don't query the user table, data is not showing up in reference field.