MOSS: Uppdatera en anpassad lista

Det finns många goda exempel på uppdatera anpassade listor via SDK. Här är ännu en.

Affärsproblem: InfoPath-formuläret har utformats kan användare ange online inköpsrekvisitioner. PO rekvisitionen nummer ska vara traditionella sekvens baserade heltalsvärden och beräknas automatiskt.

Affärslösning: Skapa en anpassad MOSS-lista som innehåller två kolumner: "ControlField" och "ControlValue". Värdekolumnen innehåller nästa inköpsrekvisition nummer. Observera att generiskt "kontroll" namnkonvention ger för framtida kontrollfält som kan användas som behövs.

Teknisk lösning: Skapa en webbtjänst som InfoPath klient tillgång. Webbtjänsten returnerar tillbaka nästa inköpsrekvisition och uppdateras värdet i listan.

Lärdomar:

  • När du lägger till denna webbtjänst som en datakälla i InfoPath-formuläret, Jag fann det nödvändigt att konvertera den till en udc och lagra det i ett dataanslutningsbibliotek.
  • Jag också funnit det nödvändigt att skriptstöd cross-domän via centrala tjänster administration // programhantering // formuläret konfiguration.
  • Första gången form försökte få tillgång till webbtjänsten, Det tar ett tag och ibland, Det skulle vara tid. Fingrade jag med inställningar i formuläret konfiguration att expandera timeout-inställningar och som verkade för att hjälpa.

Koden:

med hjälp av System;
med hjälp av System.Web;
med hjälp av System.Web.Services;
med hjälp av System.Web.Services.Protocols;
med hjälp av Microsoft.SharePoint;
med hjälp av System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
offentliga klass PoService : System.Web.Services.WebService
{
offentliga PoService () {

//Avkommentera följande rad om du använder komponenter för
//InitializeComponent();
}

/// <Sammanfattning>
/// Få nästa PO nummer från sharepoint po kontroll listan.
/// Öka antalet PO i listan.
/// </Sammanfattning>
/// <Returnerar></Returnerar>
[WebMethod]
offentliga sträng GetNextPoNumber()
{
sträng SpPoControlSiteName; // Namnet på den faktiska MOSS webbplats som är värd för IO-kontroll listan.
sträng SpPoControlListName; // Namnet på den faktiska MOSS lista som innehåller kontrollen Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

sträng nextPoReqNumber = "xyzzy";

med hjälp av (SPSite plats = nya SPSite(SpPoControlSiteName))
{
med hjälp av (SPWeb Web = webbplats. OpenWeb())
{

SPList currentList = web. Listor[SpPoControlListName];

foreach (SPItem controlItem i currentList.Items)
{

om (((sträng)controlItem["ControlField"]).Är lika med("NextPoNumber"))
{
nextPoReqNumber = (sträng)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Konvertera.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Att lokalisera, läsa och uppdatera PO numret i listan.


} // med hjälp av spweb web = site.openweb()
} // webbplatsen för spsite = nya spsite("http://localhost/mizuho")

återvändande nextPoReqNumber;

}
}

En reaktion på ”MOSS: Uppdatera en anpassad lista

  1. KSP skrev:
    Hej Paul,
    Vi har en liknande situation vad du nämner men problemet är att jag vill använda denna webb Servië på en belastning balans server.Därav,Hur att hantera samtidighet begäranden i detta fall eller hur för att göra den nya begäran vänta och bara en begäran bör Uppdatera lista nummer tills då alla andra förfrågningar bör i que.Låt mig gärna veta hur man ska uppnå detta.
    Tack på förhand.
    Svar

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *