使用代码创建InfoPath表单并上传到SharePoint

InfoPath是微软Office套件中的一个组件,它允许用户创建和填写电子表单。本文将介绍如何使用代码创建InfoPath表单,生成类表示,上传表单模板到SharePoint,并填充数据。

设计InfoPath表单

首先,使用MicrosoftInfoPath设计器创建一个InfoPath表单。这个示例表单将存储客户的姓名和姓氏,以及一个产品和数量的表格。

保存InfoPath表单:

使用Visual Studio命令提示符加载源文件,并执行命令:

xsd.exe /c /l:CS myschema.xsd

XSD工具是.NET框架工具的一部分。将使用它从InfoPath表单的XSD文件表示生成一个通用语言类。

以下代码由xsd自动生成:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-02-04T09:20:42")] [System.Xml.Serialization.XmlRootAttribute(Namespace="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-02-04T09:20:42", IsNullable=false)] public partial class myFields { private string nameField; private string surnameField; private ProductRow[] productTableField; private System.Xml.XmlAttribute[] anyAttrField; ... }

一旦文件在项目中可用,就可以将数据源绑定到.NET类,并以标准化格式访问数据。如果对InfoPath数据源进行了更改,需要重新运行xsd.exe命令针对新的“schema.xsd”文件。

上传表单模板到SharePoint表单站点

发布表单模板到SharePoint表单站点。

使用XSD应用程序创建的类填充myFields类。

myFields fields = new myFields(); fields.Name = "Joe"; fields.Surname = "Blogs"; ProductRow[] rows = new ProductRow[2]; rows[0] = new ProductRow(); rows[0].ProductAmount = "1"; rows[0].ProductName = "Peach Jam"; rows[1] = new ProductRow(); rows[1].ProductAmount = "2"; rows[1].ProductName = "Strawberry Jam"; fields.ProductTable = rows; MemoryStream myInStream = new MemoryStream(); string rFormSite = @"http://sp/Sample Form"; string rTemplateLocation = @"http://sp/Sample Form/Forms/template.xsn"; using (myInStream) { XmlSerializer serializer = new XmlSerializer(typeof(myFields)); XmlTextWriter writer = new XmlTextWriter(myInStream, Encoding.UTF8); string rInstruction = "name=\"urn:schemas-microsoft-com:office:infopath:UploadSample:-myXSD-2009-02-04T09-20-42\" solutionVersion=\"1.0.0.2\" productVersion=\"12.0.0.0\" PIVersion=\"1.0.0.0\" href=\"" + rTemplateLocation + "\""; writer.WriteProcessingInstruction("mso-infoPathSolution", rInstruction); writer.WriteProcessingInstruction("mso-application", "progid=\"InfoPath.Document\" versionProgid=\"InfoPath.Document.2\""); serializer.Serialize(writer, fields); using (SPSite site = new SPSite(rFormSite)) { using (SPWeb spweb = site.OpenWeb()) { spweb.Files.Add(rFormSite + "\\" + Path.GetRandomFileName() + ".xml", myInStream.GetBuffer()); } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485