vLookup Custom Function

Forums Dynamic Forms for SharePoint vLookup Custom Function

This topic contains 3 replies, has 2 voices, and was last updated by  Alexander Bautz 1 week, 1 day ago.

  • Author
    Posts
  • #18651

    Cameron
    Participant

    I’m trying to use a Custom Function in vLookup to show an * when certain conditions are true. I’m having trouble using item.get_item(‘Field’); when using a Lookup field – is this supported? It works fine when I try to grab the ID or Title but not the Lookup Field I want.

    Any other suggestions on how I can achieve this based on whether a Lookup field is setup?

    
    
    function isUnconfirmed(arg,item) {
        //if Job is empty return nothing
        if(!(item.get_item("Job"))){
            //If not a Job, check if argument is a valid date
            var parsedDate = Date.parse(arg);
    
            if (isNaN(arg) && !isNaN(parsedDate)) {
                // Date found, return *
                return "*";
            } else {
                return "";
            }
        } else {
            return "";
        }
    }
  • #18693

    Alexander Bautz
    Keymaster

    Sorry for the delay – is your lookup field named “Job”? – if so, try using

    item.get_item("Job").get_lookupValue();

    or

    item.get_item("Job").get_lookupId();

    Alexander

  • #18695

    Cameron
    Participant

    Thanks Alexander,

    That’s correct, Job is the name of my Lookup field.

    Unfortunately I haven’t been able to get this to work. I noticed that Title and ID would return from the item object so I’ve got it working with the code below… but it’s slow.

    Basically I pass the ID and Field I want to check to another function which uses spjs_QueryItems to check if the field is set.

    
    
    function isUnconfirmed(arg,item) {
        //if a job return blank
        if(!(lookupValid("Job",item.get_item("ID")))){
            //Not a Job, check if Quote accepted
            var parsedDate = Date.parse(arg);
            
            // You want to check again for !isNaN(parsedDate) here because Dates can be converted
            // to numbers, but a failed Date parse will not.
            if (isNaN(arg) && !isNaN(parsedDate)) {
                //Valid Accepted Date found, return nothing
                return "";
            } else {
                return "*";
            }
        } else {
            //Item has a Job set, return nothing
            return "";
        }
    }
    
    function lookupValid(strField,intID){
        //Function looks up the field for the supplied ID and returns true is a valid value is found
        if(isNaN(intID)||intID<1){
            console.log("Invalid ID supplied");
            return false;
        }
        qb = [];
        qb.push("<Where>");
        qb.push("<Eq>");
        qb.push("<FieldRef Name='ID' /><Value Type='Text'>"+intID+"</Value>");
        qb.push("</Eq>");
        qb.push("</Where>");
        
        res = spjs_QueryItems({"listName":"Stock Movement","listBaseUrl":"../..","query":qb.join(""),"viewFields":[strField]});
        if(res.count > 0){
            item = res.items[0];
                    
            if(item[strField]===null){
                return false;
            } else{
                return true;
            }
        } else {
        	return false;
        }
    }
  • #18697

    Alexander Bautz
    Keymaster

    If you don’t get any results when using item.get_item(“Job”).get_lookupValue() I suspect you might have many lookup columns and people pickers in this list?

    If this is true, the query will not pull back all these fields (only the first 7 I think). To workaround this issue, try going into list settings and change the order of the fields and move “Job” up over the other lookup or people picker columns.

    Alexander

You must be logged in to reply to this topic.