SetFieldValue not changing the value of a Lookup - Forum - Rollbase - Progress Community

SetFieldValue not changing the value of a Lookup

 Forum

SetFieldValue not changing the value of a Lookup

  • Hi, I need to change the value of a lookup based on another fields value. The thing is we are using to hide the text box and selector etc to make the field "ReadOnly":

    // Making the Account Manager field Read Only
    var accmgrid = rbf_getFieldValue('accountManager');
    $('#txtaccountManager').parent('td').hide();
    $('#accountManager_' + accmgrid + ' span:nth-child(1) i:nth-child(1)').hide();

    OnChange event:

    <script>

    function onChangeDivision(form)
    {
    var relDivision = form.contactDivision.value;
    if (relDivision != ""){
    function cb(values) {
    var acctMgr = values[0][0];
    //alert(acctMgr);
    rbf_setFieldValue('accountManager', acctMgr);
    }
    rbf_selectQuery("select accountManager from division where id=" + relDivision, 1, cb);
    }
    }
    </script>

    Why wont the setfieldvalue set? What other way could i possibly achieve this? We do not want the users to set this value at all.

  • Even if I exclude the first code so its a normal lookup (nothing hidden) the value wont set?

  • Hi, just to further. If I alert the previous value and the set values the correspond but not visually:

    <script>

    function onChangeDivision(form)

    {

    var relDivision = form.contactDivision.value;

    if (relDivision != ""){

    function cb(values) {

    var acctMgr = values[0][0];

    alert(acctMgr);

    //$('#rbi_F_accountManager span').click();

    //$('#rbi_F_accountManager').children().remove();

    //rbf_setFieldValue('accountManager', null);

    rbf_setFieldValue('accountManager', acctMgr);

    alert(rbf_getFieldValue('accountManager'));

    }

    rbf_selectQuery("select accountManager from division where id=" + relDivision, 1, cb);

    }

    }

    </script>

  • Hello,

    This is a known issue. You can set the lookup value as you said by using the  rbf_setFieldValue method but will not display the link below the field. Here is a previous post you might want to look at https://community.progress.com/.../27430.aspx

    Thank you,

    Gian

  • Hi Gian

    Thanks for that, it got us close:

    <script>

    function onChangeDivision(form)

    {

    var relDivision = form.contactDivision.value;

    if (relDivision != ""){

    function cb(values) {

    var acctMgr = values[0][0];

    //alert(acctMgrName);

    //alert('Before: ' + acctMgr);

    //$('#rbi_F_accountManager span').click();

    //$('#rbi_F_accountManager').children().remove();

    //rbf_setFieldValue('accountManager', null);

    rbf_setFieldValue('accountManager', acctMgr);

    rbf_selectQuery("select id, name from USER where id=" + acctMgr, 1, function cback(val){

               var acctMgrId = val[0][0];

    var acctMgrName = val[0][1];

    alert(acctMgrName + " " + acctMgrId + "Old ID: " + {!accountManager#id});

    rbf_selectObject(acctMgrId, acctMgrName, null, "accountManager", false);

    //rbf_selectObject(acctMgrId, acctMgrName);

    $('#accountManager_' + acctMgrId + ' span:nth-child(1) i:nth-child(1)').hide();

    });

    }

    rbf_selectQuery("select accountManager from division where id=" + relDivision, 1, cb);

    }

    }

    </script>

    The display is good to go however on looking at the DOM the accountManager_(CurrId) is still the old Account Managers Id. As the code is above it doesnt work with the selectObject. if you change it to:

    rbf_selectObject({!accountManager#Id}, acctMgrName, null, "accountManager", false);

    It works but the accountManaget_(AcctMgrId) is the old value but not the new assigned Account Manager id

  • The Id for the specific user should be 10844, i have used setFieldValue and selectObject after setting the value.

    Am I missing something?

  • Hello Byron,

    If you are using the selectObject function then you don't need to use the setFieldValue method. The selectObject function is used in the lookup selector popup. Can you check your parameters in the method?

    Thank you,

    Gian

  • Thanks Gian

    I have done what you suggested using:

    <script>
    
    function onChangeDivision(form)
    {
    	var relDivision = form.contactDivision.value;
    	if (relDivision != ""){
    		function cb(values) {
    		var acctMgr = values[0][0];
    		
    		rbf_selectQuery("select id, name from USER where id=" + acctMgr, 1, function cback(val){
                var acctMgrId = val[0][0];
    			var acctMgrName = val[0][1];
    			rbf_selectObject(acctMgrId, acctMgrName, null, 'accountManager', false);
    			$('#accountManager_' + acctMgrId + ' span:nth-child(1) i:nth-child(1)').hide();
    		});
    
    		}
    		rbf_selectQuery("select accountManager from division where id=" + relDivision, 1, cb);
    	}
    }
    </script>


    Everything seems to be ok via the DOM but the old Account Manager is still being saved?

  • Everything looks fine here but the old Account Manager is still being saved

  • Hello,

    Can you try checking the syntax of the selectObj method in the popup box? try checking the record's link and see if it matches your parameters. I tried using that previously and I can set the correct id with it.

    Thanks,
    Gian