how to add reference field in ui page

nallalakshman
Tera Contributor

Hi 

 

we have a UI page with couple of fields. when we submit that form one quality review record will create now we have to add a reference field (assignment group) and map it to the quality review table field.

 

thanks in advance.

3 REPLIES 3

Abhishek Pal
Mega Guru

Hi @nallalakshman ,

You can add an Assignment Group reference field to the UI Page using the g:ui_reference Jelly tag. The selected value will be the sys_id of the group, which you can assign directly to the reference field on your Quality Review record.

UI Page HTML:

<?xml version="1.0" encoding="utf-8"?>

<j:jelly trim="false"
xmlns:j="jelly:core"
xmlns:g="glide">

<g:ui_form>

<table class="form-table">
<tr>
<td>
<label for="assignment_group">
Assignment Group
</label>
</td>

<td>
<g:ui_reference
name="assignment_group"
id="assignment_group"
table="sys_user_group"
query="active=true"
completer="AJAXTableCompleter"
columns="name"/>
</td>
</tr>
</table>

<br/>

<button type="submit" class="btn btn-primary">
Submit
</button>

</g:ui_form>

</j:jelly>

In the UI Page Processing Script, retrieve the selected group and populate the Quality Review record:

var assignmentGroupSysId =
request.getParameter('assignment_group');

if (!assignmentGroupSysId) {
gs.addErrorMessage('Assignment Group is required.');
} else {

var groupGR = new GlideRecordSecure('sys_user_group');

if (!groupGR.get(assignmentGroupSysId) ||
groupGR.getValue('active') != 'true') {

gs.addErrorMessage(
'The selected Assignment Group is not valid or active.'
);

} else {

var qualityReviewGR =
new GlideRecordSecure('u_quality_review');

if (!qualityReviewGR.canCreate()) {
gs.addErrorMessage(
'You do not have permission to create a Quality Review record.'
);
} else {

qualityReviewGR.initialize();

qualityReviewGR.u_assignment_group =
assignmentGroupSysId;

// Map your other UI Page fields here.
// Example:
// qualityReviewGR.u_comments =
// request.getParameter('comments');

var qualityReviewSysId =
qualityReviewGR.insert();

if (qualityReviewSysId) {
response.sendRedirect(
'u_quality_review.do?sys_id=' +
qualityReviewSysId
);
} else {
gs.addErrorMessage(
'The Quality Review record could not be created.'
);
}
}
}
}

Replace:

u_quality_review

with the actual Quality Review table name.

Replace:

u_assignment_group

with the actual Assignment Group reference field name on the Quality Review table.

If you already have a GlideRecord insert in the Processing Script, you only need to add:

qualityReviewGR.u_assignment_group =
request.getParameter('assignment_group');

Important:

- Keep the name and id of the reference control the same.
- request.getParameter('assignment_group') returns the selected group sys_id.
- Do not use sys_display.assignment_group because that contains the display value.
- Ensure the Quality Review field references Group [sys_user_group].
- Use ACLs to control which users can create or update Quality Review records.

Hope this helps!

If this response helped, please mark it as Helpful.
If it resolves your issue, please Accept it as Solution.

Kind Regards,
Abhishek Pal

Bhavya11
Kilo Patron

Hi @nallalakshman ,

 

Yes, you can add reference field in ui page something like this

 

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">
    
    <!-- Label for the reference field -->
    <label for="my_user_field">Select User:</label>
    
    <!-- The reference field component -->
    <g:ui_reference 
        name="my_user_field" 
        id="my_user_field" 
        table="sys_user" 
        query="active=true" 
        onChange="onUserChange()" />

</j:jelly>

 

Client Script:

function onUserChange() {
    // Captures the 32-character record sys_id
    var selectedSysId = gel('my_user_field').value; 
    
    // Captures the readable display text string
    var selectedText = gel('sys_display.my_user_field').value; 
    
   alert"Selected SysID: " + selectedSysId + " | Display: " + selectedText);
}

 

 

If this information proves useful, kindly mark it as helpful or accepted solution.

Thanks,
BK

Ankur Bawiskar
Tera Patron

@nallalakshman 

so what did you start and where are you stuck?

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