Es gibt viele gute Beispiele für benutzerdefinierte Listen über das SDK aktualisieren. Hier ist noch eine weitere.
Geschäftsproblem: InfoPath-Formular wurde entwickelt, dass ermöglicht Benutzern online eingeben Bestellanforderungen kaufen. PO Requisition, Zahlen sollten traditionelle Sequenz basierten ganzzahlige Werte und automatisch berechnet.
Business-Lösung: Erstellen einer benutzerdefinierten MOSS-Liste mit zwei Spalten: "ControlField" und "ControlValue". Die Wertspalte enthält die nächste Bestellanforderungsnummer. Beachten Sie, dass das generische Modell "control" Namenskonvention bietet für zukünftige Kontrolle-Felder, die verwendet werden können, je nach Bedarf.
Technische Lösung: Erstellen Sie einen Webdienst abgerufen von InfoPath-client. Der Webdienst gibt wieder die nächste Bestellanforderungsnummer und aktualisiert den Wert der Liste.
Lessons Learned:
- Wenn Sie diesen Webdienst als Datenquelle zum InfoPath-Formular hinzufügen, Ich hielt es für notwendig, in eine udc konvertieren und speichern Sie es in einer Datenverbindungsbibliothek.
- Ich fand auch das notwendigen Cross Domain scripting über zentrale Dienste-Verwaltung // Anwendungsverwaltung // Formular-Server-Konfiguration.
- Zum ersten Mal versucht, das Formular Zugriff auf den Webdienst, Es dauert eine Weile und gelegentlich, Es wäre Zeit. Ich manipuliert mit Einstellungen in Formular-Server-Konfiguration um die Timeouteinstellungen zu erweitern und das schien zu helfen.
Der code:
Verwendung System;
Verwendung System.Web;
Verwendung System.Web.Services;
Verwendung System.Web.Services.Protocols;
Verwendung Microsoft.SharePoint;
Verwendung System.Configuration;
[WebService(Namespace = "http://www.Conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
öffentliche Klasse PoService : System.Web.Services.WebService
{
öffentliche PoService () {
//Kommentieren Sie, dass die folgende Zeile verwenden Komponenten ausgelegt
//InitializeComponent();
}
/// <Zusammenfassung>
/// Erhalten Sie die nächste PA-Nummer in der Steuerelementliste Sharepoint po Nummer.
/// Erhöhen Sie die PA-Nummer in der Liste.
/// </Zusammenfassung>
/// <Gibt zurück></Gibt zurück>
[WebMethod]
öffentliche Zeichenfolge GetNextPoNumber()
{
Zeichenfolge SpPoControlSiteName; // Name des tatsächlichen MOSS-Website, die die PO Steuerelementliste hostet.
Zeichenfolge SpPoControlListName; // Name der eigentlichen MOSS-Liste, das Po-Steuerelement enthält.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
Zeichenfolge NextPoReqNumber = "xyzzy";
Verwendung (SPSite Website = Neu SPSite(SpPoControlSiteName))
{
Verwendung (SPWeb Web = Site. OpenWeb())
{
SPList CurrentList = Web. Listen[SpPoControlListName];
foreach (SPItem controlItem im currentList.Items)
{
If (((Zeichenfolge)controlItem["ControlField"]).Entspricht("NextPoNumber"))
{
NextPoReqNumber = (Zeichenfolge)controlItem["ControlValue"];
int int_nextPoReqNumber;
Int_nextPoReqNumber = Konvertieren.ToInt32(nextPoReqNumber);
Int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Auffinden von, Lesen und aktualisieren die PA-Nummer in der Liste.
} // mit Spweb Web = site.openweb()
} // Nutzung Spsite Site = neue Spsite("http://Localhost/Mizuho")
Rückkehr nextPoReqNumber;
}
}