MOOS: Aktualisieren einer benutzerdefinierten Liste

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;

}
}

Ein Gedanke zu "MOOS: Aktualisieren einer benutzerdefinierten Liste

  1. KSP schrieb:
    Hallo Paul,
    Wir haben eine ähnliche Situation, was Sie erwähnen sind, aber das Problem ist, dass ich diese Web-Servie auf einen Load-Balance-Server verwenden möchten.Daher,wie Sie in diesem Fall Parallelität Anfragen oder wie für die neue Anforderung warten und nur eine Anforderung die Listennummer bis aktualisieren sollten dann alle anderen Anfragen sollten in que.Bitte lassen Sie mich wissen, wie man dieses Ziel zu erreichen.
    Vielen Dank im voraus.
    Antwort

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *