How to Remove Value from field

chanikya
Tera Guru

Hi All,

kindly help me on below one

there are two List type fields PR Parent, PR Child

if Parent value removed from PR Parent then that Parent related Child values should be removed from PR Child.

find_real_file.png

 

PR Details table designed like this.

find_real_file.png

17 REPLIES 17

Hi @SUMANTH DOSAPATI ,

I have tried your code. seems to be everything is good.

There might be some issue , after removing parent "A" value from PR Parent, leftover Parent values "B", "c"  populating in PR child, this is not correct.

1. I think , we have to pass "PR Child " field values into "new_array2"

2. after  "A " deselected in Parent, I think we have to pass left over Parent values into "uns "

find_real_file.png

find_real_file.png

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    //Type appropriate comment here, and begin script below
    var old_array = oldValue.toString().split(',');
    var new_array = newValue.toString().split(',');
    var new_array2 = new_array;
    var old_count = old_array.length;
    var new_count = new_array.length;
    var unique_array = [];
    if (old_count > new_count) //it means values are removed
    {
        for (var i = 0; i < old_count; i++) {
            if (new_array.indexOf(old_array[i]) == '-1') {
                unique_array.push(old_array[i]);
            }
        }
        var uns = unique_array.join(',');
        alert(uns);
        var ga = new GlideAjax('ListFieldValues'); //client callable script include name
        ga.addParam('sysparm_name', 'getDetails');
        ga.addParam('sysparm_par', uns);
        ga.getXMLAnswer(callback);
    }

    function callback(response) {
        var all_child_array = response.split(',');
        alert("all_child_array :" + all_child_array);
        for (var i = 0; i < new_count; i++) {
            if (all_child_array.indexOf(new_array[i]) != '-1') {
                var ind = new_array2.indexOf(new_array[i]);
                alert(ind);
                new_array2.splice(ind, 1);
            }
        }
        alert("new_array2 :" + new_array2);
        g_form.setValue('u_pr_child', new_array2.join(','));
    }
}

Script Include : 

var ListFieldValues = Class.create();
ListFieldValues.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getDetails: function() {
        var childs = [];
        var par = this.getParameter('sysparm_par');
        gs.addInfoMessage(gs.getMessage("PR :" + par));
        var gr = new GlideRecord('u_pr_details'); //update table name 
        gr.addEncodedQuery("u_parent.sys_idIN" + par); //update parent field name as "field_nameIN";
        gr.query();
        while (gr.next()) {
            childs.push(gr.sys_id.toString());
        }
        var childs_string = childs.join(",");
        return childs_string;
    },
    type: 'ListFieldValues'
});

In script include, in the line

	childs.push(gr.sys_id);

Instead of gr.sys_id,  use gr.field_name

Here field name refers to the name field in that PR table.

 

Regards,
Sumanth

Hi 

below code working

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    //Type appropriate comment here, and begin script below
    var old_array = oldValue.toString().split(',');
    var new_array = newValue.toString().split(',');
    alert("New Array :" + new_array);
    var new_array2 = g_form.getValue('u_pr_child').toString().split(',');
    alert("New Array 2 :" + new_array2);
    var old_count = old_array.length;
    var new_count = new_array.length;
    var unique_array = [];
    var ind = [];
    if (old_count > new_count) //it means values are removed
    {
        for (var i = 0; i < old_count; i++) {
            if (old_array.indexOf(new_array[i]) > -1) {
                unique_array.push(new_array[i]);
            }
        }
        var uns = unique_array.join(',');
        alert("uns " + uns);
        var ga = new GlideAjax('ListFieldValues'); //client callable script include name
        ga.addParam('sysparm_name', 'getDetails');
        ga.addParam('sysparm_par', uns);
        ga.getXMLAnswer(callback);
    }

    function callback(response) {
        var all_child_array = response.split(',');
        alert("all_child_array :" + all_child_array);
        for (var j = 0; j < all_child_array.length; j++) {
            if (new_array2.indexOf(all_child_array[j]) > -1) {
                ind.push(all_child_array[j]);
            }
        }
        alert("ind :" + ind);
        g_form.setValue('u_pr_child', ind.join(','));
    }



}

 

var ListFieldValues = Class.create();
ListFieldValues.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getDetails: function() {
        var childs = [];
        var par = this.getParameter('sysparm_par');
        gs.addInfoMessage(gs.getMessage("PR :" + par));
        var gr = new GlideRecord('u_pr_details'); //update table name 
        gr.addEncodedQuery("u_parent.sys_idIN" + par); //update parent field name as "field_nameIN";
        gr.query();
        while (gr.next()) {
            childs.push(gr.sys_id.toString());
        }
        var childs_string = childs.join(",");
        return childs_string;
    },
    type: 'ListFieldValues'
});