UI action button dialog box requirement

Rose17
Tera Contributor

Hi All,

 

I have a requirement to create button on a custom table. Whenever the user clicks on the button, it should open a pop up saying ‘Do you want to proceed?’ with Ok and Cancel button.

When the user clicks on Ok button, it should insert a new record and redirect to the new record form copying the fields values of previous record. Fields like number and additional comments should be copied in the new record from previous record.

When the user clicks on Cancel button, it should abort the action and close the pop up.

 

Could some one help me to achieve this requirement?

Any help is appreciated.

 

Thanks in advance.

1 ACCEPTED SOLUTION

@Rose17 

I won't recommend using GlideRecord into client side

so try something like this

function myAction()
{
	if(confirm("Do you want to proceed?")==true){
		gsftSubmit(null, g_form.getFormElement(), "Action name")
	}
}

if(typeof window == 'undefined')
	createReq();

function createReq() {
	var gr = new GlideRecord('custom_table_name');
	gr.initialize();
	gr.newRecord();
	gr.number = current.number;
	gr.comments=current.comments;
	var newID = gr.insert();
	action.setRedirectURL(gr);
	action.setReturnURL(current);
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

16 REPLIES 16

Ankur Bawiskar
Tera Patron
Tera Patron

@Rose17 

So what did you start with and where are you stuck?

you should use client side + server side UI action

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

@Rose17 

I won't recommend using GlideRecord into client side

so try something like this

function myAction()
{
	if(confirm("Do you want to proceed?")==true){
		gsftSubmit(null, g_form.getFormElement(), "Action name")
	}
}

if(typeof window == 'undefined')
	createReq();

function createReq() {
	var gr = new GlideRecord('custom_table_name');
	gr.initialize();
	gr.newRecord();
	gr.number = current.number;
	gr.comments=current.comments;
	var newID = gr.insert();
	action.setRedirectURL(gr);
	action.setReturnURL(current);
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

Hi @Ankur Bawiskar,

 

I'm curious.

Why wouldn't you just do this client side? For performance reasons?


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

@Peter Bodelier 

I have seen few cases in the past where ServiceNow flags this in instance scan and suggests not to use GlideRecord in client side script.

Also seen some cases where ServiceNow recommends not using GlideRecord in client side script in scoped app.

There is no documentation for this which I could locate but it's based on my past experience with ServiceNow guys.

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

Thanks @Ankur Bawiskar 

I've never had issues with it (although rarely used). Hence my question. 🙂 As long as you think about how you use it (and with moderation), it seems fine for me to do sometimes.

I agree, using the combo of client & server side in UI Action seems better, but also harder to understand for newcomers.


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.