Forms in SharePoint Online
Hi
we have SharePoint online - E1 Plan. We need to create some custom forms with meta data, that look up lists, have attachments, workflow etc..would you suggest javascript in SPO or would you suggest a provider hosted app - store the app in SQL Azure..? thoughts
..pro's , con's?
thx
nsco2
I think a lot of it depends on whether you need server side code to attach to an external data source, etc. If you need Server side code then use a provider hosted app. If you can do it all in javascript then a SharePoint hosted app or just
a page with a Content Editor Web Part would be easier.
Paul Stork SharePoint Server MVP
Principal Architect: Blue Chip Consulting Group
Blog: http://dontpapanic.com/blog
Twitter: Follow @pstork
Please remember to mark your question as "answered" if this solves your problem.
Similar Messages
-
How to migrate sharepoint 2010 infopath form to sharepoint online.
how to migrate SharePoint 2010 infopath form to SharePoint online.
Hi Partha,
You use powershell script to migrate infopath forms from SP 2010 to SP Online. But you need to be careful about external connections used in infopath forms(web service connections etc.) because they might required to be changed. So, for data connections,
use of Data Connection Library is a preferable way or you can write a powershell script to update the data connections also.
You can find the sample script from the below url:
https://drive.google.com/file/d/0B_mYrpgMRd3IbHdpZkNBLVNhd1k/view?usp=sharing
Best Regards,
Brij K -
Follow-up question about forms and SharePoint Online
I asked a question about life after InfoPath earlier, and got a good answer:
http://social.technet.microsoft.com/Forums/sharepoint/en-US/fb23b3d9-8a09-4267-aab5-09929f6a3082/life-after-infopath-seeking-advice
After looking at all of the limitations of SharePoint Online, I'm wondering how developers are dealing with the limitations. Lets say you are asked to develop something that has complex logic, including fetching data from external web services, dynamically
displaying parts of a process to people depending on role, and ending up with a printable document. In our on-premises environment, InfoPath is well suited to this task, with some code behind for some things. Or, if not using InfoPath, we would use application
pages and workflow.
Neither of those are available in SharePoint Online, so what would you do?Some things, such as the conditional display of content, can be done via JavaScript. More advanced items, such as integrating external web services would likely require a SharePoint "app". A SharePoint app is essentially a link to a separate site
that is running an asp.net web app (or PHP, or whatever). This asp.net site can do anything it needs with any web services, or conditional formatting, or anything. Because it's registered as a SharePoint app, it can also call back into the SharePoint site
and work with data. So, a SharePoint App could present the user with a robust form that simply sends the data back to a SharePoint list. The SharePoint app can also be surfaced on the SharePoint site itself in an iframe, so the user won't know that the form
is hosted by another server.
By the way, the ideas behind the app model permeate the entire SharePoint environment: instead of having the SharePoint server itself run all kinds of custom business logic, that workload is handled by other servers, so the SharePoint servers can be focused
on running the core bits of SharePoint. InfoPath puts a large load on the servers, so it's out. XSLT list views also put a load on the server, so they're also out. SSRS is an amazingly fantastic tool, but is not supported in the cloud (and there's no
alternative). Timer jobs, event handlers, workflow, and many other things have been re-architected to take the load off the SharePoint servers.
Mike G. -
Infopath2013 button in secondary view not visible on form in SharePoint online
We have a SharePoint list that has gotten its Form with Infopath.
The infopathform has 2 views:
Userview and Fullview.
The Userview has some fields and a submit button and is activated when adding a new item in the list.
The Fullview is active when opening a list item. The open form will not show the additional button that resides in the Fullview.
Any ideas how to get the button to show?
brgs
BjørnHi,
Could you please explain about "additional button"? Do you mean other list fields or "Save"/"Cancel" button?
If you mean list fields, you could manually drag them to this view from Fields.
If you mean "Save"/"Cancel" button, by default, there are some ribbons under Edit Tab as below:
Regards,
Rebecca Tu
TechNet Community Support
Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
[email protected] -
Adding multiple attachments to Infopath form for Sharepoint Online
I don't get the option to add a repeating section into the infopath form to allow multiple attachment in the section. I initially created the form from the sharepoint list and not from blank in infopath and then connecting to sharepoint.
Although i would be happy to get the multiple attachments in the same section i would prefer to add an attachment option to each part of the form. Currently i would need to add 10 separate attachments.
Is there code available to do this in SharePoint designer 2013? if yes, can you provide the code in need with instructions?
if there is another way to achieve this then please let me know. thanks
Hi,
Per my knowledge, IWConvertedForms library seems to contain references to all lists and libraries where the item template has been customized to use an InfoPath form.
You can access it through
https://sitename/IWConvertedForms/Forms/AllItems.aspx
However, there is no method to get the template link and download to edit the template.
You need to get both the XML file and the original InfoPath form template that was deployed to SharePoint.
For more information, you can refer to:
How to open an InfoPath form and template that were moved or copied
Best Regards,
Linda Li
Linda Li
TechNet Community Support -
Develop Form and Workflow in SharePoint Online and On-Premise
Hi Expert,
I have the question about Form and Workflow in SharePoint Online vs ShrePoint On-Premise
Current Problem : Customer is implemented Form and Workflow in SharePoint Online but they have a problem some features that didn’t work in SharePoint Online. I will have a meeting to discuss Do and Don’t Form and Workflow in SharePoint Online compare SharePoint
On-Premise.
Please suggestion.
Thank youHi MasterBird,
There is no documentation to explain the difference of the custom form and workflow between SharePoint Online and SharePoint On-Premise. For your issue, you can have a look at the following blog:
http://www.techrepublic.com/blog/the-enterprise-cloud/get-infopath-forms-and-sharepoint-online-with-office-365/
https://support.office.com/en-us/article/Office-365-known-issues-6b380978-84ce-49af-be5d-f7cda0fe28f9?ui=en-US&rs=en-US&ad=US#__sharepoint_online_preview
https://support.office.com/en-in/article/Configure-InfoPath-Forms-Services-a8609546-c0d7-4956-81b6-08e93eb4b290?ui=en-US&rs=en-IN&ad=IN
http://blog.sharepointlearn.com/2011/11/03/sharepoint-in-office-365-the-good-the-bad-the-brilliant-and-the-ugly/
Thanks,
Eric
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected]
Eric Tao
TechNet Community Support -
How can I create a contact form for sending emails in SharePoint Online?
Dear Forum members,
I´ve got a question about creating a custom contact form to send emails for a public site in SharePoint online.
Could someone help us with some advise?
In advance, thank you very much.
Kind regards,
FritsYou can create Custom list and make alerts enable to send emails as soon as contact created.
Bala -
Anonymous User forms in Sharepoint 2013 Online (Office 365)
I'm using Sharepoint 2013 online with Office 365.
Is there any way for an anonymous user to communicate with the site using forms (preferably Infopath)?
There are many, many versions of this question on the web, but most answers seem to talk about features I just don't have in Office 365 Sharepoint - such as Application Management in Central Administration, which just isn't there.
The only feature I can find is the Excel Survey in Form Templates. This is at least a start, but what I really want is the ability for an anonymous user (a customer) to submit information into a Custom List using a form; or, second best, in an email (WITHOUT
having to have Infopath Filler installed). this is all do-able for a fully-subscribed user of the intranet site, but I can't afford to buy individual subscriptions for all my customers. Nor do I want them seeing each other's data, or accessing my intranet!
I have spent so long researching this and getting nowhere, and really need to know if it's just a straight 'no, it's impossible', or keep trying.
Thanks
JonathanHi Jonathan,
According to your description, my understanding is that you want to enable anonymous user with forms in SharePoint 2013 Online.
There is a Sandbox solution from CodePlex, it manages anonymous access on Office 365 / SharePoint 2013. Please have a try.
https://anonymous365.codeplex.com/
In addition, I am not an expert for SharePoint 2013 Online, I suggest you create a new thread on SharePoint Online forum, more experts will assist you with SharePoint Online.
SharePoint Online forum:
http://social.technet.microsoft.com/Forums/en-US/home?forum=onlineservicessharepoint
I hope this helps.
Thanks,
Wendy
Wendy Li
TechNet Community Support -
Anonymous User forms in Sharepoint 2013 Online
I'm using Sharepoint 2013 online with Office 365.
Is there any way for an anonymous user to communicate with the site using forms (preferably Infopath)?
There are many, many versions of this question on the web. Several lead to
http://claytoncobb.wordpress.com/2011/06/03/infopath-allowing-anonymous-users-to-submit-forms-in-sharepoint-2010/, but this is about Sharepoint 2010, not 2013. Other answers talk about features that are not in Sharepoint online 2013, such as Application
Management in Central Administration. There is also a Sandbox solution from CodePlex that gets touted,
https://anonymous365.codeplex.com/, but this fails in Sharepoint Online 2013.
The only feature I can find is the Excel Survey in Form Templates. This is at least a start, but what I really want is the ability for an anonymous user (a customer) to submit information into a Custom List using a form; or, second best, in an email (WITHOUT
having to have Infopath Filler installed). Seems a pretty basic need, really - letting your customers place orders. This is all do-able for a fully-subscribed user of the intranet site, but I can't afford to buy individual subscriptions for all my customers.
Nor do I want them seeing each other's data, or accessing my intranet!
I have spent so long researching this and getting nowhere, and really need to know if it's just a straight 'no, it's impossible', or keep trying.
Thanks
JonathanThanks pramod7
Yes, I am using the public site. But unless I'm missing something, Custom Lists (and associated forms) cannot be exposed to anonymous users. They are just not in the permissions list.
I can create a page in the public site and add a Form Templates web part. The options I then get for creating a new form in the Form Templates library are Word Document, Excel Workbook, Powerpoint Presentation, One Note Notebook or Excel Survey. An
InfoPath form is not an option. None of these (as far as I can see) allow for any data entered in the 'form' by a user to be stored in a Custom List for further processing. Most require the user to have Word/Excel/whatever on their machine, rather than
just use the browser. The nearest you get is the Excel Survey, which at least regularises the data entered by an anonymous user into columns in a spreadsheet, but this is not sophisticated enough for, say, an online ordering system in which you would not want
customers seeing each other's orders. -
Unable to get User Information in infopath form hosted on sharepoint online(2013)
Im trying to retrieve user information (department, Manager, Work E- Mail, Etc..) into an infopath form hosted in sharepoint online using "/_vti_bin/UserProfileService.asmx"
web service. But it returns me an error when im opening the form as :
An error occurred while
trying to connect
to a
web service. Error ID 5566
Any idea about how to get those information into a form which hosted in Office365 environment?
Thanks.I believe this is a known issue:http://support.microsoft.com/kb/2674193/en-us
-
Form and Workflow in SharePoint Online vs SharePoint On-Premise
Hi Expert,
I have the question about Form and Workflow in SharePoint Online vs ShrePoint On-Premise
Current Problem : Customer is implemented Form and Workflow in SharePoint Online but they have a problem some features that didn’t work in SharePoint Online. I will have a meeting to discuss Do and Don’t Form and Workflow in SharePoint Online compare SharePoint
On-Premise.
Please suggestion.
Thank youHi MasterBird,
For SharePoint 2013 On-premise, we can :
Comlete control of our environment and data
Supports heavy customization
Keep sensitive information in-house
Easier integration into line of business systems
Full development options for developers
For SharePoint Online workflow:
Workflow 2010 & 2013 are available with Standard and Enterprise Editions without having to install
If using Windows Azure workflow functionality is the same as 2013
Cannot create custom Visual Studio workflows
For InfoPath Form Services you will need Office 365 Enterprise Could Edition or SharePoint Online Plan 2
More information, please refer to the video:
http://www.youtube.com/watch?v=eNtCH3qOk2g
Best Regards,
Wendy
Forum Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected]
Wendy Li
TechNet Community Support -
SharePoint online 2013 event receiver error
I am currently working on a SharePoint online project. My code generates 6 documents in 6 different document libraries along with other metadata. When I save data to a List, the event receiver fires and creates all the 6 documents. But sometimes it stops creating
the 6 documents and left with 1 or 2 documents. Sometimes documents has been created but without any metadata.
The same code is working fine in my on-premises environment, but it sometimes breaks in the Office 365 environment. I also created a log list to track the issue as we cannot debug in Office 365. In the log list I found a error message saying "Thread was
being aborted." Below is my code. please help it is happening only in Office 365 environment.
namespace ExcelGen.ExcelGenReceiver
using System;
using Microsoft.SharePoint;
/// <summary>
/// List Item Events
/// </summary>
public class ExcelGenReceiver : SPItemEventReceiver
/// <summary>
/// The template URL
/// </summary>
private const string TemplateUrl = "/Quotation Analysis Electrical/Forms/Quotation Analysis Sheet ELEC_Blank.xlsm";
/// <summary>
/// The template url1
/// </summary>
private const string TemplateUrl1 = "/Quotation Analysis Mechanical/Forms/Quotation Analysis Sheet MECH_Blank.xlsm";
/// <summary>
/// The template url2
/// </summary>
private const string TemplateUrl2 = "/TenderSummaryLib/Forms/TenderSummaryBlankMaster1.xlsm";
/// <summary>
/// The RFI template URL
/// </summary>
private const string RfiTemplateUrl = "/EstimatingRFI/Forms/RFI Schedule MASTER.docx";
/// <summary>
/// The drawing template URL
/// </summary>
private const string DrawingTemplateUrl = "/Tender and Drawing Schedule/Forms/Tender Document Drawing Schedule.docx";
/// <summary>
/// The tender return template URL
/// </summary>
private const string TenderReturnTemplateUrl = "/Est_Tender_Pricing_Document/Forms/Tender Pricing Document blank.xlsm";
/// <summary>
/// The project number
/// </summary>
private string projectNumber = string.Empty;
/// <summary>
/// The project name
/// </summary>
private string projectName = string.Empty;
/// <summary>
/// The no bid
/// </summary>
private string noBid;
/// <summary>
/// The team
/// </summary>
private string team;
/// <summary>
/// The description
/// </summary>
private string description;
/// <summary>
/// The status
/// </summary>
private string status;
/// <summary>
/// The electrical
/// </summary>
private SPUser electrical;
/// <summary>
/// The mechanical
/// </summary>
private SPUser mechanical;
/// <summary>
/// The document date
/// </summary>
private DateTime? docDate;
/// <summary>
/// The tender received
/// </summary>
private DateTime? tenderReceived;
/// <summary>
/// The tender return
/// </summary>
private DateTime? tenderReturn;
/// <summary>
/// The pre construction program start date
/// </summary>
private DateTime? preConstructionProgramStart;
/// <summary>
/// The pre construction program end date
/// </summary>
private DateTime? preConstructionProgramEnd;
/// <summary>
/// The sector
/// </summary>
private string sector;
/// <summary>
/// The design build
/// </summary>
private string designBuild;
/// <summary>
/// The build type
/// </summary>
private string buildType;
/// <summary>
/// The service program start date
/// </summary>
private DateTime? serviceProgramStart;
/// <summary>
/// The service program completion date
/// </summary>
private DateTime? serviceProgramCompletion;
/// <summary>
/// The client1
/// </summary>
private string client1;
/// <summary>
/// The client2
/// </summary>
private string client2;
/// <summary>
/// The client3
/// </summary>
private string client3;
/// <summary>
/// The client4
/// </summary>
private string client4;
/// <summary>
/// The consultant
/// </summary>
private string consultant;
/// <summary>
/// An item is being added.
/// </summary>
/// <param name="properties">The Item Event properties</param>
public override void ItemAdded(SPItemEventProperties properties)
//this.EventFiringEnabled = false;
var web = properties.Web;
var listItem = properties.ListItem;
try
LogIssue(web, null, "Item Added", "List Item Id {0}", listItem.ID);
if (!this.AttemptCopyProcess(listItem))
LogIssue(web, null, "List Id : " + listItem.ID, "AttemptCopyProcess failed.");
catch (Exception ex)
LogIssue(web, ex, "List Id : " + listItem.ID, "AttemptCopyProcess failed.");
finally
//this.EventFiringEnabled = true;
LogIssue(web, null, "List Id : " + listItem.ID, "Event Receiver completed sucessfully.");
/// <summary>
/// Logs any issues found
/// </summary>
/// <param name="webContext">The web context.</param>
/// <param name="exception">The exception, if null not exception details are written</param>
/// <param name="contextId">The context identifier, a unique identifier that allows us to know where the call originated, i.e. a List and ListItem Id, or a Page Url</param>
/// <param name="comment">The comment.</param>
/// <param name="args">The arguments.</param>
private static void LogIssue(SPWeb webContext, Exception exception, string contextId, string comment, params object[] args)
//// if (webContext.AllProperties.ContainsKey("EnableLogging"))
var list = webContext.Lists.TryGetList("ErrorIssues");
if (list != null)
var item = list.AddItem();
item["Title"] = contextId;
if (exception != null)
item["Message"] = exception.Message;
item["InnerException"] = exception.InnerException ?? (object)string.Empty;
item["StackTrace"] = exception.StackTrace;
if (!string.IsNullOrEmpty(comment))
item["Comment"] = string.Format(comment, args);
item.Update();
/// <summary>
/// Assigns the field.
/// </summary>
/// <param name="listItem">The list item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <param name="contextId">The context identifier.</param>
/// <returns>The fields string value if present, otherwise string.empty.</returns>
private static string AssignField(SPListItem listItem, string fieldName, string contextId)
var fieldValue = string.Empty;
if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
fieldValue = listItem[fieldName].ToString();
else
LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
return fieldValue;
/// <summary>
/// Assigns the field as a DateTime
/// </summary>
/// <param name="listItem">The list item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <param name="contextId">The context identifier.</param>
/// <returns>Returns the date if found, otherwise returns DateTime.MinValue</returns>
private static DateTime? AssignDateField(SPListItem listItem, string fieldName, string contextId)
DateTime? fieldValue = null;
if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
fieldValue = Convert.ToDateTime(listItem[fieldName].ToString());
else
LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
return fieldValue;
/// <summary>
/// Creates the folder.
/// </summary>
/// <param name="listdoc">The list.</param>
/// <param name="folderName">Name of the folder.</param>
private static void CreateFolder(SPList listdoc, string folderName)
LogIssue(listdoc.ParentWeb, null, "List Id : " + listdoc.ID, "Creating folder {0} in {1}", folderName, listdoc.RootFolder.ServerRelativeUrl);
// Updated by Indusnet
SPListItem folder1 = listdoc.Items.Add(listdoc.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder);
folder1["Name"] = folderName;
folder1.Update();
listdoc.Update();
// End Updated
/// <summary>
/// Assigns the user field.
/// </summary>
/// <param name="listItem">The list item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <param name="contextId">The context identifier.</param>
/// <returns>Returns the user if found, otherwise null.</returns>
private static SPUser AssignUserField(SPListItem listItem, string fieldName, string contextId)
SPUser user = null;
if (listItem.Fields.ContainsField(fieldName) && listItem[fieldName] != null)
var userField = (SPFieldUser)listItem.Fields.GetField(fieldName);
var fieldValue = (SPFieldUserValue)userField.GetFieldValue(listItem["electrical_proj_manager"].ToString());
user = fieldValue.User;
else
LogIssue(listItem.Web, null, contextId, string.Format("Field not available : {0}", fieldName));
return user;
/// <summary>
/// Attempts the copy process.
/// </summary>
/// <param name="listItem">The list item.</param>
/// <returns>True if it successfully processed, false otherwise.</returns>
private bool AttemptCopyProcess(SPListItem listItem)
if (listItem.ParentList.Title != "Enquiry_Template")
LogIssue(listItem.Web, null, "List Id : " + listItem.ID, "ListItem titles is not Enquiry_Template, aborting.");
return false;
var finalNum = "15-" + new Random().Next(0, 9999).ToString("D4");
this.Initialize(listItem, finalNum);
if (this.noBid != "Yes")
LogIssue(listItem.Web, null, "List Id : " + listItem.ID, "The noBid field does not equal Yes, aborting.");
return false;
this.CopyFiles(listItem.Web, finalNum);
this.CreateFolders(listItem.Web);
return true;
/// <summary>
/// Copies the files.
/// </summary>
/// <param name="web">The web.</param>
/// <param name="finalNum">The final number.</param>
private void CopyFiles(SPWeb web, string finalNum)
LogIssue(web, null, "Web Id : " + web.ID, "Setting the copying of files ...");
var mechanicalQuoteList = web.Lists["Quotation Analysis Mechanical"];
var electricalQuoteList = web.Lists["Quotation Analysis Electrical"];
var tenderSummarList = web.Lists["TenderSummaryLib"];
var estimatingList = web.Lists["EstimatingRFI"];
var tenderSheduleList = web.Lists["Tender and Drawing Schedule"];
var tenderPricingList = web.Lists["Est_Tender_Pricing_Document"];
var url1 = mechanicalQuoteList.RootFolder.ServerRelativeUrl;
var url = electricalQuoteList.RootFolder.ServerRelativeUrl;
var url2 = tenderSummarList.RootFolder.ServerRelativeUrl;
var urlA = estimatingList.RootFolder.ServerRelativeUrl;
var urlB = tenderSheduleList.RootFolder.ServerRelativeUrl;
var urlC = tenderPricingList.RootFolder.ServerRelativeUrl;
var foldername1 = string.Empty;
var foldername = string.Empty;
var foldername2 = string.Empty;
var foldernameA = string.Empty;
var foldernameB = string.Empty;
var foldernameC = string.Empty;
var folder1 = web.Folders[url1 + "/" + foldername1];
var folder = web.Folders[url + "/" + foldername];
var folder2 = web.Folders[url2 + "/" + foldername2];
var folderA = web.Folders[urlA + "/" + foldernameA];
var folderB = web.Folders[urlB + "/" + foldernameB];
var folderC = web.Folders[urlC + "/" + foldernameC];
if (!folder1.Exists && !folder.Exists && !folder2.Exists && !folderA.Exists && !folderB.Exists && !folderC.Exists)
var folders1 = web.GetFolder(url1).SubFolders;
var folders = web.GetFolder(url).SubFolders;
var folders2 = web.GetFolder(url2).SubFolders;
var foldersA = web.GetFolder(urlA).SubFolders;
var foldersB = web.GetFolder(urlB).SubFolders;
var foldersC = web.GetFolder(urlC).SubFolders;
folders1.Add(foldername1);
folders.Add(foldername);
folders2.Add(foldername2);
foldersA.Add(foldernameA);
foldersB.Add(foldernameB);
foldersC.Add(foldernameC);
var file1 = web.GetFile(web.Site.Url + TemplateUrl1);
var file = web.GetFile(web.Site.Url + TemplateUrl);
var file2 = web.GetFile(web.Site.Url + TemplateUrl2);
var fileA = web.GetFile(web.Site.Url + RfiTemplateUrl);
var fileB = web.GetFile(web.Site.Url + DrawingTemplateUrl);
var fileC = web.GetFile(web.Site.Url + TenderReturnTemplateUrl);
if (file1 != null && file != null && file2 != null && fileA != null && fileB != null && fileC != null)
var fileName = string.Format("{0}/{1}{2}", folder1.ServerRelativeUrl, this.projectName, ".xlsm");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 1 {0} to {1}...", file1.Name, fileName);
var byteArray1 = file1.OpenBinary();
var uploadedFile1 = folder1.Files.Add(fileName, byteArray1, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 1 Uploaded with new ID of {0}", uploadedFile1.Item.ID);
this.EventFiringEnabled = false;
var listitem1 = uploadedFile1.Item;
listitem1["Name"] = this.projectName;
listitem1["EnquiryNo"] = finalNum;
listitem1["Project_Name"] = this.projectName;
listitem1["Tender_Received"] = this.tenderReceived;
listitem1["Tender_Return"] = this.tenderReturn;
listitem1["Quotation_Analysis_Mech_Url"] = "https://my site url/Quotation%20Analysis%20Mechanical/Forms/DispForm.aspx?ID=" + listitem1.ID;
listitem1.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 1.");
fileName = string.Format("{0}/{1}{2}", folder.ServerRelativeUrl, this.projectName, ".xlsm");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 2 {0} to {1}...", file.Name, fileName);
var byteArray = file.OpenBinary();
var uploadedFile = folder.Files.Add(fileName, byteArray, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 2 Uploaded with new ID of {0}", uploadedFile.Item.ID);
this.EventFiringEnabled = false;
var listitem = uploadedFile.Item;
listitem["Name"] = this.projectName;
listitem["EnquiryNo"] = finalNum;
listitem["Project_Name"] = this.projectName;
listitem["Tender_Received"] = this.tenderReceived;
listitem["Tender_Return"] = this.tenderReturn;
listitem["Quotation_Analysis_Elec_Url"] = "https://my site url/Quotation%20Analysis%20Electrical/Forms/DispForm.aspx?ID=" + listitem.ID;
listitem.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 2.");
fileName = string.Format("{0}/{1}{2}", folderA.ServerRelativeUrl, this.projectName, ".docx");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 3 {0} to {1}...", fileA.Name, fileName);
var byteArrayA = fileA.OpenBinary();
var uploadedFileA = folderA.Files.Add(fileName, byteArrayA, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 3 Uploaded with new ID of {0}", uploadedFileA.Item.ID);
this.EventFiringEnabled = false;
var listitemA = uploadedFileA.Item;
listitemA["Name"] = this.projectName;
listitemA["EnquiryNo"] = finalNum;
listitemA["Project_Name"] = this.projectName;
listitemA["Date"] = this.docDate;
listitemA["Description"] = this.description;
listitemA["ProjectNo"] = this.projectNumber;
listitemA["RFIUrl"] = "https://my site url/EstimatingRFI/Forms/DispForm.aspx?ID=" + listitemA.ID;
listitemA.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 3.");
fileName = string.Format("{0}/{1}{2}", folderB.ServerRelativeUrl, this.projectName, ".docx");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 4 {0} to {1}...", fileB.Name, fileName);
var byteArrayB = fileB.OpenBinary();
var uploadedFileB = folderB.Files.Add(fileName, byteArrayB, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 4 Uploaded with new ID of {0}", uploadedFileB.Item.ID);
this.EventFiringEnabled = false;
var listitemB = uploadedFileB.Item;
listitemB["Name"] = this.projectName;
listitemB["EnquiryNo"] = finalNum;
listitemB["Project_Name"] = this.projectName;
listitemB["Date"] = this.docDate;
listitemB["Description"] = this.description;
listitemB["ProjectNo"] = this.projectNumber;
listitemB["DrawingURL"] = "https://my site url/Tender%20and%20Drawing%20Schedule/Forms/DispForm.aspx?ID=" + listitemB.ID;
listitemB.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 4.");
fileName = string.Format("{0}/{1}{2}", folderC.ServerRelativeUrl, this.projectName, ".xlsm");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 5 {0} to {1}...", fileC.Name, fileName);
var byteArrayC = fileC.OpenBinary();
var uploadedFileC = folderC.Files.Add(fileName, byteArrayC, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 5 Uploaded with new ID of {0}", uploadedFileC.Item.ID);
this.EventFiringEnabled = false;
var listitemC = uploadedFileC.Item;
listitemC["Name"] = this.projectName;
listitemC["EnquiryNo"] = finalNum;
listitemC["Project_Name"] = this.projectName;
listitemC["Date"] = this.docDate;
listitemC["Description"] = this.description;
listitemC["ProjectNo"] = this.projectNumber;
listitemC["PricingURL"] = "https://my site url/Est_Tender_Pricing_Document/Forms/DispForm.aspx?ID=" + listitemC.ID;
listitemC.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 5.");
fileName = string.Format("{0}/{1}{2}", folder2.ServerRelativeUrl, this.projectName, ".xlsm");
LogIssue(web, null, "Web Id : " + web.ID, "Copying file 5 {0} to {1}...", file2.Name, fileName);
var byteArray2 = file2.OpenBinary();
var uploadedFile2 = folder2.Files.Add(fileName, byteArray2, true);
LogIssue(web, null, "Web Id : " + web.ID, "File 6 Uploaded with new ID of {0}", uploadedFile2.Item.ID);
this.EventFiringEnabled = false;
var listitem2 = uploadedFile2.Item;
listitem2["Name"] = this.projectName;
listitem2["EnquiryNo"] = finalNum;
listitem2["Project_Name"] = this.projectName;
listitem2["Date"] = this.docDate;
listitem2["Team"] = this.team;
listitem2["Estimator_Electrical"] = this.electrical;
listitem2["Estimator_Mechanical"] = this.mechanical;
listitem2["Status"] = this.status;
listitem2["Tender_Received"] = this.tenderReceived;
listitem2["Tender_Return"] = this.tenderReturn;
listitem2["Sector"] = this.sector;
listitem2["Design_Build"] = this.designBuild;
listitem2["Build_Type"] = this.buildType;
listitem2["Service_Prog_Start"] = this.serviceProgramStart;
listitem2["Service_Prog_Completion"] = this.serviceProgramCompletion;
listitem2["Client_1"] = this.client1;
listitem2["Client_2"] = this.client2;
listitem2["Client_3"] = this.client3;
listitem2["Client_4"] = this.client4;
listitem2["Consultant"] = this.consultant;
listitem2["Pre-construction_Prog_Start"] = this.preConstructionProgramStart;
listitem2["Pre-construction_Prog_End"] = this.preConstructionProgramEnd;
listitem2["Tender_Summary_Url"] = "https://my site url/TenderSummaryLib/Forms/DispForm.aspx?ID=" + listitem2.ID;
listitem2.SystemUpdate(false);
this.EventFiringEnabled = true;
LogIssue(web, null, "Web Id : " + web.ID, "Copied file 6.");
/// <summary>
/// Creates the folders.
/// </summary>
/// <param name="web">The web.</param>
private void CreateFolders(SPWeb web)
var projectListId = web.Lists.Add(this.projectName.Replace(' ', '_'), string.Empty, SPListTemplateType.DocumentLibrary);
var projectList = web.Lists[projectListId];
projectList.OnQuickLaunch = true; // The document library will appear in Quick Launch bar.
CreateFolder(projectList, "1.Tender Documents");
CreateFolder(projectList, "2. Electrical");
CreateFolder(projectList, "3. Mechanical");
CreateFolder(projectList, "4. Correspondance");
CreateFolder(projectList, "5. Settlement Meeting Docs");
CreateFolder(projectList, "6. Tender Return Docs");
CreateFolder(projectList, "7. Tender Handover");
projectList.Update();
/// <summary>
/// Initializes the specified list item.
/// </summary>
/// <param name="listItem">The list item.</param>
/// <param name="finalNum">The final number.</param>
private void Initialize(SPListItem listItem, string finalNum)
var contextId = string.Format("List:{0}, Id:{1}", listItem.ParentList.Title, listItem.ID);
this.noBid = AssignField(listItem, "Bid", contextId);
this.projectName = AssignField(listItem, "Project_Name", contextId);
var teamlookup = AssignField(listItem, "Team", contextId);
var lookupParts = teamlookup.Split(new[] { ";#" }, StringSplitOptions.None);
this.team = lookupParts[1];
this.description = AssignField(listItem, "Description", contextId);
this.status = AssignField(listItem, "enquiry_status", contextId);
this.electrical = AssignUserField(listItem, "electrical_proj_manager", contextId);
this.mechanical = AssignUserField(listItem, "mechanical_proj_manager", contextId);
this.docDate = AssignDateField(listItem, "Date", contextId);
this.tenderReceived = AssignDateField(listItem, "Tender_Received", contextId);
this.tenderReturn = AssignDateField(listItem, "Tender_Return", contextId);
this.preConstructionProgramStart = AssignDateField(listItem, "Pre-construction_Prog_Start", contextId);
this.preConstructionProgramEnd = AssignDateField(listItem, "Pre-construction_Prog_End", contextId);
this.sector = AssignField(listItem, "Sector", contextId);
this.designBuild = AssignField(listItem, "Design_Build", contextId);
this.buildType = AssignField(listItem, "Build_Type", contextId);
this.serviceProgramStart = AssignDateField(listItem, "Service_Prog_Start", contextId);
this.serviceProgramCompletion = AssignDateField(listItem, "Service_Prog_Completion", contextId);
this.client1 = AssignField(listItem, "Client_1", contextId);
this.client2 = AssignField(listItem, "Client_2", contextId);
this.client3 = AssignField(listItem, "Client_3", contextId);
this.client4 = AssignField(listItem, "Client_4", contextId);
this.consultant = AssignField(listItem, "Consultant", contextId);
if (this.status == "Won")
this.projectNumber = string.Format("15-{0}-{1}", this.team, new Random().Next(0, 9999).ToString("D4"));
if (this.status == "Active" || this.status == "Closed")
this.projectNumber = "No Project No";
listItem["ProjectNo"] = this.projectNumber;
listItem["EnquiryNo"] = finalNum;
listItem.Web.AllowUnsafeUpdates = true;
listItem.SystemUpdate(false);Hi,
In this forum we mainly discuss questions and feedbacks about Office client products, as your question is about SharePoint 2013, I suggest you post this thread in SharePoint forum:
https://social.technet.microsoft.com/Forums/office/en-US/home?category=sharepoint
The reason why we recommend posting appropriately is you will get the most qualified pool of respondents, and other partners who read the forums regularly can either share their knowledge or learn from your interaction with us. Thank you for your understanding.
Regards,
Melon Chen
TechNet Community Support
It's recommended to download and install
Configuration Analyzer Tool (OffCAT), which is developed by Microsoft Support teams. Once the tool is installed, you can run it at any time to scan for hundreds of known issues in Office
programs. Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
[email protected] -
PT-BR
Olá Pessoal , estou tentando criar um aplicativo hospedado em um servidor de domínio próprio (provider-hosted) . Ao rodar o aplicativo localmente pelo visual studio eu consigo obter {StandardTokens} e todos os seus parâmetros: "AppContext",
"AppContextToken", "AccessToken", "SPAppToken" .
Ao publicar o Aplicativo no sharepoint online 365 e instalar o app em meu site e executar o app. Os parâmetros não passados via query string e nem por resquest form.
Em minha query string vem apenas os parâmetros: SPHostUrl,
SPHostTitle,SPLanguage,SPClientTag,
SPProductNumber,SenderId
Alguém poderia me ajudar com este problema?
English
Hello Guys, I'm trying to create an application hosted on your own domain server (provider-hosted). When running
the application locally by visual studio I can get StandardTokens} and all of its parameters, "AppContext", "AppContextToken", "AccessToken", "SPAppToken".
By posting application in sharepoint online 365 and install the app on my site and run the app. Non parameters
passed via the query string and not for resquest form.
In my query string comes only parameters: SPHostUrl, SPHostTitle, SPLanguage, SPClientTag, SPProductNumber,
SenderId
Could anyone help me with this problem?
.Cs
string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);check the links, see if they can help
https://social.msdn.microsoft.com/Forums/en-US/39488844-8568-48c2-8d09-a8eb12fb4591/providerhosted-app-could-not-find-a-context-token?forum=appsforsharepoint
https://social.msdn.microsoft.com/Forums/en-US/23163e33-2f84-4356-813d-04f9103889c5/sharepoint-providerhosted-app-context-token-not-available?forum=appsforsharepoint
Work hard, play harder! -
SharePoint Online list view threshold issues: "because it exceeds the list view threshold enforced by the administrator"
Office 365 SharePoint Online can be problematic when it comes to exceeding the list item threshold (e.g. 5,000).
Examples of what happens after exceeding the threshold (e.g. 5,000 items):
You can’t create new forms for the list in SharePoint Designer.
You may have challenges with metadata fields in the forms (e.g. adding metadata values, editing metadata values, deleting the metadata column from the list).
Cannot save the list as a template (i.e. you get the threshold error).
Issue I'd like assistance with: how can I create a custom NewForm in SharePoint Designer
when the list exceeds the threshold limit, given this is Office 365 SharePoint Online and I don't have access to increase that limit?
As a control for my testing, I created another list with just a few custom columns with no list items --it worked fine for that list.
I also tried clearing local AppData cache which didn't solve it. I'd need Central Admin on O365 SharePoint Online to increase the threshold which I don't have access
to do. Errors received in SharePoint Designer:
"Could not save the list changes to the server." After getting this, I tried to work around
the create new forms issue by saving a copy of the original NewForm as NewForm2 and got the root error that I suspected was underlying it all:
“Server error: the attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator”.
Any ideas for how to create a new list form in SD?Thanks Alex.
I just found a couple new workarounds instead of using SharePoint Designer:
Method 1: Add web parts to the form pages on the client side:
Go to the list and execute one of these actions depending what form you want to edit: create a new item (NewForm), edit an item (EditForm), or display an item (DispForm).
With the form you want to edit displayed, go to the gear icon and click "Edit Page".
You should now see the web part page show up with "Add a Web Part" as an option.
Add a Content Editor or Script Editor web part.
Add your custom code to either one to manipulate the HTML objects using your favorite web languages.
Method 2: Use InfoPath 2013.
The InfoPath 2013 route appears to work. -
Sharepoint online & Sharepoint Designer 2013
Hi, I am receiving an error each time I try to open a SharePoint online site through SharePoint designer 2013.
The error is saying "The Server Could not complete your request". I click on 'Details' and get a repeated "403 Forbidden403 Forbidden403 Forbidden" error message. After I pass this message I get a standard "You do not have permission
to open this web site in SharePoint designer"
Here are a list of things that have so far not worked for me:
Using "https://" rather than "http://" - Same issue.
Removing SharePoint Designer, deleting cache in "users>Roaming>SharePoint designer cache" - Same issue.
Clearing Generic Credentials in Credential Manager - Same issue.
Checking SharePoint site permissions to ensure that " Same issue.
My Admin role grants no restrictions.
I have Nintex trials installed and have used it to build forms on the site, I also have Nintex workflow however current tutorials detailing how to do what I need to do require SharePoint Designer 2013.
Finally SharePoint Developer 2013 has opened sites before, both SharePoint online sites and on prem, but now our company has gone in for the 'real deal' site I can not open this in SharePoint Designer 2013.
Any support would be very much appreciated, I have been trying to find a solution for a number of days now going into a week.
Regards,
AndrewHi Andrew,
What permission do you have at site collection level and site level?
For troubleshooting your issue, please go to your site collection -> site settings -> site collection administration -> SharePoint Designer Settings, make sure you enable the SharePoint Designer.
Also make sure the o365 sites are added to the trusted sites and the WebClient services (Search: services.msc) is running.Then in SPD go to Account > Switch Account and type in the credentials of the site you are trying to open (it defaults to your
Microsoft Login).
Reference:
http://community.office365.com/en-us/f/154/t/184387.aspx
https://social.technet.microsoft.com/Forums/en-US/15fd1436-3166-4e43-8b22-cdb480091548/cant-open-sharepoint-online-site-in-sharepoint-designer-2013?forum=sharepointcustomization
Best Regards,
Eric
Eric Tao
TechNet Community Support
Maybe you are looking for
-
Asynchronous HotLog CDC Space to Null Issue
I have established Asynchronous HotLog CDC in one of our testing database. I have done the following steps (as described in the Asynchronous HotLog CDC oracle documentation): ALTER DATABASE FORCE LOGGING; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALT
-
I purchased a macbook pro online this fall and had iWork and iLife apps pre-installed when I purchased it. How can I get these Apps onto my iPhone 4s without paying for it again? On my iphone those apps still require me to purchase them.
-
Regarding count for each type Trace entry
Hi Friends, I am using ALV grid Display to display the Result. my requirement is to display report with sorting & Count for each entry on a particular field. Can anybody give me the idea or smalll code on this Plz... Thanks in advance. Regards, Ravis
-
Why a base class cannot be a Private or Protected ?????
why a base class cannot be a Private or Protected ?????
-
I am importing video via fire wire to iMovie and saving it as a .mov file. When I try to view the video using QT Pro the clip plays for 30 seconds but the original video is about 7 mins. long. Any ideas why it stops? Thanks, in advance, for any help.