Launch another list form on field change

Forums Dynamic Forms for SharePoint Launch another list form on field change

This topic contains 13 replies, has 2 voices, and was last updated by  Chris Diltz 1 month, 4 weeks ago.

  • Author
    Posts
  • #17699

    Chris Diltz
    Participant

    I’m wondering if anyone has a solution that would launch a NewForm from another list in the site collection when a field is either (a) set to a specific value or (b) changes values. Use case: User answers a Yes/No question in parent form and must immediately be prompted to complete a child form (ticket) in a new dialog before moving forward with the current form. They must be prompted as we cannot rely on the user to click a button or navigate out to the child list.

    After the ticket(s) is/are created and the parent form completed, you could then use vLookup to tie the forms together.

  • #17736

    Alexander Bautz
    Keymaster

    Hi,
    It’s relatively simple to open a NewForm in a dialog from another form, but because of how the internal scripts that builds the lookup in the form works, you cannot refresh the list of available options without reloading the entire form (at least I don’t know how to do it).

    Does the “lookup” need to be a proper lookup, or could you use either the “SPJS-lookup” or the “SPJS-ac” script to get your lookup?

    Alexander

    • #17749

      Chris Diltz
      Participant

      I would use SPJS Lookup or Cascading Dropdowns on the child form but I’ve got that covered. I was more concerned with launching a child form based on a field change (or specific value selection) on the parent form, so the user is forced to complete the child form without relying on them to click a button/link. I attached an image that might explain. Hope that helps, and thank you for the quick response, Alex!

  • #17763

    Alexander Bautz
    Keymaster

    Just add this to the Custom JS and call the “openChildForm” function in a rule that triggers on “No” (in the “Run these functions / trigger these rules” field):

    function openChildForm(){
        SP.UI.ModalDialog.showModalDialog({
            "url":"/DFFS/Lists/DFFS_TestList/NewForm.aspx",
            "showMaximized":false,
            "allowMaximize":true,
            "showClose":true,
            "dialogReturnValueCallback":function(status){
                if(status === 1){
                    // form was saved - do something?
                }
            }
        });
    }

    Alexander

  • #17767

    Chris Diltz
    Participant

    Thank you sir! I will give this a shot. Is there a way to append this in order to prepopulate columns on the child form (similar to vLookup)?

  • #17773

    Alexander Bautz
    Keymaster

    You can pass the values in the URL like this:

    SP.UI.ModalDialog.showModalDialog({
            "url":"/DFFS/Lists/DFFS_TestList/NewForm.aspx?Title=Put your string here&AnotherField=Put the string here",
    ...
    ...

    Then in the NewForm Custom JS add this code:

    var urlTitle = GetUrlKeyValue("Title");
    if(urlTitle !== ""){
        setFieldValue("Title",urlTitle);
    }
    // Repeat for your other fields

    PS: Thanks for the beer!

    Alexander

  • #17893

    Chris Diltz
    Participant

    I have the basics of this working. Thanks so much!

    I do have a couple amateur questions (apologies):
    1) how do I pass a value to the child form from a column in the parent item?
    2) After saving the child NewForm, the parent form content shrinks to the top half of the dialog (with scroll bars). Do you know of a way to retain the content/dialog proportions on the parent form?

    Thanks, in advance.

  • #17915

    Alexander Bautz
    Keymaster

    1: See my code snippet from August 16:

    “url”:”/DFFS/Lists/DFFS_TestList/NewForm.aspx?Title=Put your string here&AnotherField=Put the string here

    The “Title” and “AnotherField” are the parameters you pass in the URL. If want to insert the current value from the parent form here, user it like this:

    “url”:”/DFFS/Lists/DFFS_TestList/NewForm.aspx?Title=getFieldValue(“Title”)&AnotherField=getFieldValue(“AnotherField”)

    2: Are you using anything in the “dialogReturnValueCallback” function? You may be able to use this:

    spjs.dffs.resizeDlg();

    Alexander

  • #17917

    Chris Diltz
    Participant

    The dialog resize function works perfectly – thank you! I am getting a javascript error on the form when I replace the string with the “getFieldValue” portion. I’ve tried using the FIN and friendly/display name of the column.

  • #17925

    Alexander Bautz
    Keymaster

    I think my snippet was wrong – try this:

    "url":"/DFFS/Lists/DFFS_TestList/NewForm.aspx?Title="+getFieldValue("Title")+"&AnotherField="+getFieldValue("AnotherField"),
    ...
    ...

    Alexander

  • #17931

    Chris Diltz
    Participant

    The string values are working fine but I still can’t get the parent form values to pass in the URL. I’m no longer getting any error messages, just not seeing the values populate.

  • #17933

    Chris Diltz
    Participant

    FYI, I have also tried FIN and display names of the parent/child columns to no avail.

  • #17935

    Chris Diltz
    Participant

    What about setting a variable on the parent side and passing that variable in the URL?

  • #17937

    Chris Diltz
    Participant

    I got it working now, disregard. You had it right, Alex – thanks so much for your help.

You must be logged in to reply to this topic.