Я использую XmlFormView на странице SharePoint для просмотра форм с поддержкой браузера InfoPath и программно добавляю логику открытия и сохранения.
Все идет хорошо, без метода XmlForm.SaveAs . Этот метод генерирует исключение NotImplementedException, если я вызываю его для экземпляра XmlForm с экземпляром и с допустимым местоположением, см. Код:
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 (Объект
отправитель, EventArgs eventArguments)
в
System.Web.UI.WebControls.LinkButton.OnClick (EventArgs
есть
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String
eventArgument) в
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String
eventArgument) в
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler
sourceControl, String eventArgument)
в
System.Web.UI.Page.RaisePostBackEvent (NameValueCollection
postData) в
System.Web.UI.Page.ProcessRequestMain (Boolean
includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint)
Для ясности я обнаружил, что Microsoft.Office.InfoPath.Server.DocumentLifetime.XmlFormHost является внутренним классом, который наследует от абстрактного XmlForm класса.
- У кого-нибудь есть идея, почему этот фрагмент кода создает исключение NotImplementedException?
- Есть ли обходной путь, чтобы можно было сохранить XmlForm с указанным именем файла?
Заранее спасибо !!