1

我在 SharePoint 页面中使用 XmlFormView 来查看启用 InfoPath 浏览器的表单并以编程方式添加一些打开和保存逻辑。

一切都很好,没有XmlForm.SaveAs方法。如果我在实例化的 XmlForm 上调用此方法并使用有效位置,此方法将引发 NotImplementedException,请参见代码:

ASPX:

<InfoPath:XmlFormView ID="infoPathFormView" ShowHeader="false" Style="width: 100%;" runat="server" />

后面的代码:

infoPathFormView.SaveLocation = "http://localhost/MyFormLibrary";
infoPathFormView.DataBind();

if(infoPathFormView.XmlForm.New)
{
   string fileName = Page.User.Identity.Name;
   infoPathFormView.XmlForm.SaveAs(fileName); // This line throws.
}
else
{
   infoPathFormView.XmlForm.Save();
}

导致以下异常和堆栈跟踪:

该方法或操作未实现。在 Microsoft.Office.InfoPath.Server.DocumentLifetime.XmlFormHost.SaveAs(String fileUrl) 在 MyProject.ShowInfoPathForm.SaveButton_Click(Object sender, EventArgs eventArguments)
在 System.Web.UI.WebControls.LinkBut​​ton.OnClick(EventArgs e) 在 System。 Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.WebControls.LinkBut​​ton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl , 字符串事件参数)
在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)

为了清楚起见,我发现 Microsoft.Office.InfoPath.Server.DocumentLifetime.XmlFormHost 是一个继承自抽象XmlForm类的内部类。

  • 有谁知道为什么这段代码会抛出 NotImplementedException?
  • 是否有一种解决方法可以使用指定的文件名保存 XmlForm?

提前致谢!!

4

2 回答 2

1

出于安全原因,XmlFormView 控件的 XsnLocation、XmlLocation 和SaveLocation属性必须指定与自定义页面相同的网站集中的位置。

于 2011-05-18T13:46:20.850 回答
0

请注意,SaveAs 不适用于服务器表单,正如您从问题链接的文章中指定的那样:“只能从在 Microsoft Office InfoPath 2007 中打开的表单中运行的代码访问此类型或成员。”

考虑使用 SaveLocation ( http://msdn.microsoft.com/en-us/library/microsoft.office.infopath.server.controls.xmlformview.savelocation.aspx ) 在与模板相同的网站集中指定文件名。

于 2011-05-18T21:56:37.370 回答