XMLFORMVIEW in einer ASP.NET-Seite einbinden (2)
Infopath Form Services MOSS
In einem anderen Beitrag, hatte ich ja mal beschrieben, welche DLL's man sich lokal kopieren sollte, damit man mit VS 2005 Infopath in einer ASP.NET Seite hosten kann.
Hier nun ein Beispiel, was man damit anfangen kann......
Kategorie In einem anderen Beitrag, hatte ich ja mal beschrieben, welche DLL's man sich lokal kopieren sollte, damit man mit VS 2005 Infopath in einer ASP.NET Seite hosten kann.
Hier nun ein Beispiel, was man damit anfangen kann......
Also ich habe ein Infopath-Formular, welches über die Form-Services ausgefüllt werden soll.
Zur Kategorisierung müssen einige Angaben (Hersteller-Gruppe, Hersteller, Verkäufergruppe, use.) gemacht werden.
Hier würde dich ein Tree-View zur Eingabe eignen.
Sieht dann so aus
Hier der Code, welcher unter dem Selected-Node-Event hängt:
protected void tvContracts_SelectedNodeChanged(object sender, EventArgs e) {
TreeNode tn = tvContracts.SelectedNode;
int iDepth = tn.Depth;
EnsureChildControls();
XmlFormView1.DataBind();
XPathNavigator root = XmlFormView1.XmlForm.MainDataSource.CreateNavigator();
XPathNavigator xpnContractType =
root.SelectSingleNode("/my:VEC_INFORMATION/my:CONTRACT_TYPE", XmlFormView1.XmlForm.NamespaceManager);
XPathNavigator xpnSignatoryManufacturerGroup =
root.SelectSingleNode("/my:VEC_INFORMATION/my:SIGNATORY_MANUFACTURER_GROUP",
XmlFormView1.XmlForm.NamespaceManager);
XPathNavigator xpnSignatoryManufacturer =
root.SelectSingleNode("/my:VEC_INFORMATION/my:SIGNATORY_MANUFATURER", XmlFormView1.XmlForm.NamespaceManager);
XPathNavigator xpnSignatoryDealerGroup =
root.SelectSingleNode("/my:VEC_INFORMATION/my:SINGNATORY_DEALER_GROUP",
XmlFormView1.XmlForm.NamespaceManager);
XPathNavigator xpnSignatoryDealer =
root.SelectSingleNode("/my:VEC_INFORMATION/my:SIGNATORY_DEALER", XmlFormView1.XmlForm.NamespaceManager);
XPathNavigator xpnDerivative =
root.SelectSingleNode("/my:VEC_INFORMATION/my:DERIVATIVE", XmlFormView1.XmlForm.NamespaceManager);
switch (iDepth) {
case 0:
xpnContractType.SetValue("MANUFACTURER GROUP");
xpnSignatoryManufacturerGroup.SetValue(tn.Text);
break;
case 1:
xpnContractType.SetValue("MANUFACTURER");
xpnSignatoryManufacturer.SetValue(tn.Text);
xpnSignatoryManufacturerGroup.SetValue(tn.Parent.Text);
break;
case 2:
xpnContractType.SetValue("DEALER GROUP");
xpnSignatoryDealerGroup.SetValue(tn.Text);
xpnSignatoryManufacturer.SetValue(tn.Parent.Text);
xpnSignatoryManufacturerGroup.SetValue(tn.Parent.Parent.Text);
break;
case 3:
xpnContractType.SetValue("DEALER");
xpnSignatoryDealer.SetValue(tn.Text);
xpnSignatoryDealerGroup.SetValue(tn.Parent.Text);
xpnSignatoryManufacturer.SetValue(tn.Parent.Parent.Text);
xpnSignatoryManufacturerGroup.SetValue(tn.Parent.Parent.Parent.Text);
break;
case 4:
xpnContractType.SetValue("DERIVATIVE");
xpnDerivative.SetValue(tn.Text);
xpnSignatoryDealer.SetValue(tn.Parent.Text);
xpnSignatoryDealerGroup.SetValue(tn.Parent.Parent.Text);
xpnSignatoryManufacturer.SetValue(tn.Parent.Parent.Parent.Text);
xpnSignatoryManufacturerGroup.SetValue(tn.Parent.Parent.Parent.Parent.Text);
break;
}
lblErrors.Text = tn.Depth + " - " + tn.Text;
}
Mit das wichtigste am Code ist der XmlFormView1.DataBind(),
weil ohne diesen konnte ich nicht auf die Daten im Infopath-Formular zugreifen.
Gruß JJR