Redirect from NewForm to EditForm in DFFS

Forums Dynamic Forms for SharePoint Redirect from NewForm to EditForm in DFFS

Tagged: 

This topic contains 20 replies, has 5 voices, and was last updated by  Alexander Bautz 1 year, 5 months ago.

  • Author
    Posts
  • #8894

    soldier1733
    Participant

    Per your article here you mentioned to add more lines for the data object for each field to push to save. I wanted to move the questions to your forum instead of the article.

    After adding the code to your existing code, I keep receiving an error on the page (see attached image). I am using all Field Internal names for the data objects and there are no errors in the console only the pop up on the webpage. Not sure if this matters, but all fields beside Title and Office Location are people pickers.

    Here is the modified code:

    
    
    // Save NewForm.apsx and redirect to EditForm.aspx
    function saveAndRedir(){
    	setReqID();
    	var ok = spjs.dffs.check_Mandatory(["Title"]), data = {}, newItem;
    	if(ok){
    		data.Title = getFieldValue("Title");
    		data.Requestor = getFieldValue("Requestor");
    		data.Office_x0020_Location = getFieldValue("Office_x0020_Location");
    		data.Manager = getFieldValue("Manager");
    		data.GM = getFieldValue("GM");
    		data.COO = getFieldValue("COO");
    		data.CEO = getFieldValue("CEO");
    		newItem = spjs.utility.addItem(
    		{
    			"listName":_spPageContextInfo.pageListId,
    			"data":data
    		}
    		);
    		if(newItem.success){
    			location.href = location.pathname.substring(0,location.pathname.lastIndexOf("/")) + "/EditForm.aspx?ID="+newItem.id;
    		} else{
    			alert(newItem.errorText);
    		}
    	}
    }

    Thanks in advance!

    • This topic was modified 2 years, 1 month ago by  soldier1733.
    Attachments:
  • #8898

    Alexander Bautz
    Keymaster

    This most likely has to do with wrong format of the value in the data object. Which type of fields are the ones you try to update?

    Use console.log to look at the data object before the “newItem =…” line – post the output here.

    Alexander

  • #8901

    soldier1733
    Participant

    The fields I am trying to update are People Picker fields for SP2013. Here is the output of the data object:
    [object Object]
    {
    [functions]: ,
    CEO: [
    0: “Jane Doe”,
    length: 1
    ],
    COO: [
    0: “John Doe”,
    length: 1
    ],
    GM: [
    0: “Janice Doe”,
    length: 1
    ],
    Manager: [
    0: “Jeff Doe”,
    length: 1
    ],
    Office_x0020_Location: “Corporate”,
    Requestor: [
    0: “Janet Doe”,
    length: 1
    ],
    Title: “REQ2015-208”
    }

  • #8903

    Alexander Bautz
    Keymaster

    Updating people pickers requires the ID and not the user display name – also the returned value is an array – so it fails on two fronts.

    You can try using this code to get the ID of the pp:

    data.GM = spjs.utility.userInfo(spjs.utility.getFieldValue({"fin":"GM","key":"loginName"})).ID

    Alexander

  • #8905

    soldier1733
    Participant

    Thank you Alex, that did the trick!!

  • #8921

    dinfante
    Participant

    Thanks Alexander! that solved the same issue for me. What about field of type SPFieldDateTime? my field internal name is End_x0020_of_x0020_Week_x0020_Da

  • #8923

    dinfante
    Participant

    I only need the date portion

  • #8955

    Alexander Bautz
    Keymaster

    The date and time in SharePoint DB is stored in ISO8601 format – October 25 would be entered like this:

    2015-10-25 00:00:00

    Alexander

  • #9027

    dinfante
    Participant

    I meant what is the custom string command I use for a Date field for the redirect to work? I’ve tried several things and nothing seems to work. I keep getting “Invalid date/time value. A date/time field contains invalid data. Please check the value and try again.”

    data.End_x0020_of_x0020_Week_x0020_Da = ?

  • #9034

    Alexander Bautz
    Keymaster

    You must split the date and reassemble it in the correct format. If your date format is “US” like this: 10/27/2015 you can use something like this:

    var d = getFieldValue("TheDateColName").split("/");
    data.End_x0020_of_x0020_Week_x0020_Da = d[2]+"-"+d[0]+"-"+d[1]+" 12:00:00";

    Alexander

  • #10594

    Penny Kingston
    Participant

    Hi Alex, I have used your code for saving and redirecting a form using the code below. It works great except that the required field of “SalesID” no longer seems to be required.

    It appears that the code checks the field but there is no alert that forces someone to populate the field. Do you have any suggestions for making the salesID required using this code?

    function GoToEdit(){
    var ok = spjs.dffs.check_Mandatory([“SalesID”]),
    data = {},
    newItem,
    url;
    if(ok){
    data.SalesID = getFieldValue(“SalesID”);
    newItem = spjs.utility.addItem({“listName”:_spPageContextInfo.pageListId,”data”:data});
    if(newItem.success){
    url = location.pathname.substring(0,location.pathname.lastIndexOf(“/”)) + “/EditForm.aspx?ID=”+newItem.id;
    if(GetUrlKeyValue(“IsDlg”)===”1″){
    url += “&IsDlg=1”;
    }
    location.href = url;
    }else{
    alert(newItem.errorText);
    }
    }
    }
    function PreSaveAction(){
    saveAndRedir();
    }

  • #10625

    Alexander Bautz
    Keymaster

    Hi,
    I suspect the field “SalesID” is not flagged as required in your list. If this is the case, either set it as required (in DFFS or in the list settings) or add this line of code to the top of your function:

    spjs.dffs.data.requiredFields.push("SalesID");

    Hope this helps,
    Alexander

  • #10629

    Penny Kingston
    Participant

    Hi Alex,
    I did have the field set as required but your line of code worked perfectly!
    Many thanks!

  • #10657

    Penny Kingston
    Participant

    Alex,
    I am now trying to use the same code on the edit form to save and stay on the edit form. However, using the code above does not work because it tries to create a new item as opposed to saving the existing item. My guess is that I need to modify the newItem line:

    NewItem = spjs.utility.addItem({“listName”:_spPageContextInfo.pageListId,”data”:data});

    I have seen “spjs.utility.addItem” and “spjs.utility.DeleteItem” used in your blogs, do you have a command to edit, save or update an item?
    Thanks!

  • #10684

    Alexander Bautz
    Keymaster

    Hi,
    In editform you must use “spjs.utility.updateItem” like this:

    spjs.utility.updateItem({"listName":_spPageContextInfo.pageListId,"id":spjs.dffs.data.thisItemID,"data":{"Title":"New title value"}});

    Alexander

  • #10690

    Penny Kingston
    Participant

    Hi again,
    This code works and appears to update the “title” field with the pre-defined text “New Title Value”. How could I make this work to update any and all changes to any fields within the form? (There is no way to pre define them.)
    Thanks!

  • #10692

    Alexander Bautz
    Keymaster

    Hi,
    It was only an example – just replace the

    spjs.utility.addItem({...

    function with the one from the example, and use the “data” variable instead of the {“Title”:”New title value”} example.

    Alexander

  • #10694

    Penny Kingston
    Participant

    This is my new code for the “save and edit” button. It is not saving any new or updated data, it is simply refreshing the original data. Thanks again!

    function GoToEdit(){
    spjs.dffs.data.requiredFields.push(“SalesID”);
    data = {};
    updateItem = spjs.utility.updateItem({“listName”:_spPageContextInfo.pageListId,”id”:spjs.dffs.data.thisItemID,”data”: data });
    if(updateItem.success){location.href = location.href;
    }else{alert(updateItem.errorText);} }

  • #10709

    Alexander Bautz
    Keymaster

    Hi,
    To use this approach you skip the default save method in SharePoint and basically “inject” the data using the “updateItem” function. This means you must add ALL field data (or at least the fields that are changed) to the “data” object.

    In your code example you pass an empty object, and thus no data is updated.

    Alexander

  • #12115

    Colin
    Participant

    Would it be possible to get this redirect and save without close functionality built into the configuration forms?

  • #12161

    Alexander Bautz
    Keymaster

    I’m still on the lookout for a good method to handle the redirect in SP 2013, but will hopefully be able to solve this soon. When it comes to “save and stay in form”, I might be able to add it in a later version, but it’s not so easy to support all kind of fields in a consistent way so I cannot promise anything.

    Alexander

You must be logged in to reply to this topic.