1. Wstęp
|
1.Wstęp
Wykorzystując standardową kontrolkę z biblioteki Microsoft.Office.InfoPath.Server.dll możemy umożliwić użytkownikowi dodawanie nowych formularzy InfoPath do biblioteki w jedym oknie razem z listą istniejących formularzy.
Wykorzystując tą bibliotekę można stworzyć o wiele mocniejsze rozwiązanie które pozwoli na:
- dodawanie nowych formularzy
- podgląd istniejących formularzy
- uniknięcie błędów podczas pierwszego uruchomienia webparta z XMLFormView.
I wszystko to na jednej i tej samej stronie.
2.Kod webparta XMLFormView
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using Microsoft.Office.InfoPath.Server.Controls;
using System.Web.UI.WebControls;
...
const string c_xmlloc = "";
const string c_xsnloc = "";
private string _xmlloc = c_xmlloc;
private string _xsnloc = c_xsnloc;
public XmlFormView XMLFormViewer;
...
[ConnectionConsumer("XMLLocation")]
public void GetConnectionInterface(IWebPartField providerPart)
{
FieldCallback callback = new FieldCallback(this.ReceiveField);
providerPart.GetFieldValue(callback);
}
public void ReceiveField(object field)
{
if (field != null)
{
xmlloc = field.ToString();
}
}
...
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("XML Location"), WebDescription("URL of web-enabled InfoPath form"), Category("Miscellaneous")]
public string XMLLocation
{
get
{
return _xmlloc;
}
set
{
_xmlloc = value;
}
}
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("XSN template URL"), WebDescription("URL of infopath form template"), Category("Miscellaneous")]
public string XSNLocation
{
get
{
return _xsnloc;
}
set
{
_xsnloc = value;
}
}
...
protected override void CreateChildControls()
{
XMLFormViewer = new XmlFormView();
if ((_xsnloc.Length > 0) || (_xmlloc.Length > 0))
{
XMLFormViewer.EditingStatus = XmlFormView.EditingState.Editing;
Controls.Add(XMLFormViewer);
if ((_xmlloc.Length > 0))
{
XMLFormViewer.XmlLocation = _xmlloc;
XMLFormViewer.XsnLocation = "";
}
else if ((_xsnloc.Length > 0))
{
XMLFormViewer.XmlLocation = "";
XMLFormViewer.XsnLocation = _xsnloc;
}
try
{
XMLFormViewer.DataBind();
}
catch (System.Exception exc)
{
}
}
else
{
}
}
Pozdrawiam
Michał