Home › Forums › Classic DFFS › Create Copy from DispForm or EditForm
- This topic has 3 replies, 2 voices, and was last updated 2 years, 3 months ago by Alexander Bautz.
-
AuthorPosts
-
-
September 3, 2022 at 00:18 #36084
Hi Alexander, I currently have a ‘Save & Copy to New Form Entry’ button and working perfectly; however, the team also needs to create a ‘Copy to New Form Entry’ from a DispForm or EditForm. I wasn’t able to figure out how to add the button from DispForm since there is a Save
I couldn’t even get it started from DispForm at all. I started to from EditForm but it’s trying to copy to another EditForm instead of Copying to a NewForm
http://contoso.com/sites/xxx/xxx/Lists/xxx/EditForm.aspx?CreateCopy=1
if I changed the address line to …..NewForm.aspx?CreateCopy=1 then it’s perfect.
1 – What can I change below so it doesn’t require a Save to trigger the copy and start new entry?
2 – What can I change from the following code to have the CreateCopy=1 open as NewForm instead of EditForm?
3 – What can I change from the code below to add a button and trigger copy/start new form from Display?// If creating a copy
if(GetUrlKeyValue(“CreateCopy”) === “1”){
var str = sessionStorage.getItem(“SaveAndCreateNewData”), data;
if(str !== null){
data = JSON.parse(str);
jQuery.each(data,function(fin,val){
setFieldValue(fin,val);
});
}
}
// Add button
jQuery(“input[id$=’_diidIOSaveItem’]”).after(“<input type=’button’ class=’ms-ButtonHeightWidth’ style=’margin-right:4px;’ value=’Copy & Start a New Entry’ onclick=’saveAndCopy()’ />”);
var createCopyWhenSaving = false;
function saveAndCopy(){
createCopyWhenSaving = true;
spjs.dffs.triggerSave();
}
function dffs_PreSaveAction(){
if(createCopyWhenSaving){
var arr = [
“FieldInternalNameA”,
“FieldInternalNameB”,
“FieldInternalNameC”
];
var data = {};
jQuery.each(arr,function(i,fin){
data[fin] = getFieldValue(fin);
});
sessionStorage.setItem(“SaveAndCreateNewData”,JSON.stringify(data));
// Redirect
spjs.dffs.redirect(location.pathname + “?CreateCopy=1”,false);
}
return true;
} -
September 4, 2022 at 08:21 #36085
From EditForm you only need to change this line:
spjs.dffs.redirect(location.pathname + "?CreateCopy=1",false);
like this:
spjs.dffs.redirect(location.pathname.replace(/editform.aspx/i, "NewForm.aspx") + "?CreateCopy=1",false);
From DispForm you must change the function like this:
function saveAndCopy() { var arr = [ "FieldInternalNameA", "FieldInternalNameB", "FieldInternalNameC" ]; var data = {}; jQuery.each(arr, function (i, fin) { data[fin] = getFieldValue(fin); }); sessionStorage.setItem("SaveAndCreateNewData", JSON.stringify(data)); // Redirect location.href = location.pathname.replace(/dispform.aspx/i, "NewForm.aspx") + "?CreateCopy=1"; }
Alexander
-
September 6, 2022 at 02:43 #36094
Thank you! I can’t get the button to show up on DispForm.
// Add button
jQuery(“input[id=’_editItemBtn’]”).after(“<input type=’button’ class=’ms-ButtonHeightWidth’ style=’margin-right:4px;’ value=’Copy & Start a New Entry’ onclick=’saveAndCopy()’ />”);
var createCopyWhenSaving = false;
function saveAndCopy(){
createCopyWhenSaving = true;
spjs.dffs.triggerSave();
}also tried changed beginning of line one to jQuery(“input[id=’dffs_editItemBtn’]”).after and also jQuery(“#dffs_editItemBtn”).after but can’t figure it out.
-
September 6, 2022 at 11:41 #36095
You were on the right track changing the ID of the button, but this button is inserted after a timeout (because of some internal calculations) so you must wrap it in a setTimeout like this:
setTimeout(function(){ jQuery("#dffs_editItemBtn").before("<input type='button' class='ms-ButtonHeightWidth' style='margin-right:4px;' value='Copy & Start a New Entry' onclick='saveAndCopy()' />"); },1500);
Alexander
-
-
-
AuthorPosts
- You must be logged in to reply to this topic.