Existuje mnoho dobrých príkladov aktualizácie vlastných zoznamov pomocou súpravy SDK. Tu je ďalší.
Obchodné problém: Formulár programu InfoPath bol navrhnutý tak, že umožňuje používateľom zadať online nákup rekvizície. PO požiadaviek čísla by mala byť tradičné postupnosti založené celočíselné hodnoty a vypočítať automaticky.
Obchodné riešenia: Vytvorenie vlastného zoznamu MOSS obsahujúce dva stĺpce: "ControlField" a "ControlValue". Hodnota stĺpca obsahuje ďalšie číslo nákupnej žiadanky. Všimnite si, že generic "ovládanie" konvencia poskytuje pre budúce kontroly polia, ktoré môžu byť použité podľa potreby.
Technické riešenie: Vytvorenie webovej služby prístupné klientovi programu InfoPath. Webová služba vráti späť ďalšie číslo nákupnej žiadanky a aktualizuje hodnotu zoznamu.
Poučenie:
- Pri pridávaní túto webovú službu ako zdroj údajov pre formulár programu InfoPath, Som zistil, že je potrebné previesť ju MDT a uložte ho do knižnice pripojenia údajov.
- Som tiež zistil, že potrebné skriptovania cez domény cez centrálne služby správy // Správa aplikácií // formulár servera.
- Prvýkrát forme sa snažil získať prístup k webovej službe, chvíľu to trvá a príležitostne, to by časový limit uplynul. Som si pohrávala s nastavením v konfigurácii servera formulár rozširovať nastavenia časového limitu a ktoré zrejme pomôcť.
Kód:
pomocou Systém;
pomocou System.Web;
pomocou System.Web.Services;
pomocou System.Web.Services.Protocols;
pomocou Microsoft.SharePoint;
pomocou System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
verejné trieda PoService : System.Web.Services.WebService
{
verejné PoService () {
//Odkomentovat nasledujúci riadok, ak používate navrhnuté súčasti
//InitializeComponent();
}
/// <Zhrnutie>
/// Získať ďalšie PO číslo zo zoznamu lokality sharepoint po číslo kontroly.
/// Prírastok číslo nákupnej objednávky v tomto zozname.
/// </Zhrnutie>
/// <Vráti></Vráti>
[WebMethod]
verejné reťazec GetNextPoNumber()
{
reťazec SpPoControlSiteName; // Názov aktuálnej stránky MOSS, ktorá je hostiteľom zoznamu PO.
reťazec SpPoControlListName; // Meno skutočného MOSS zoznam obsahujúci Po kontrole.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
reťazec nextPoReqNumber = "xyzzy minového";
pomocou (SPSite stránky = nové SPSite(SpPoControlSiteName))
{
pomocou (SPWeb webové stránky =. OpenWeb())
{
SPList currentList = web. Zoznamy[SpPoControlListName];
foreach (SPItem controlItem v currentList.Items)
{
Ak (((reťazec)controlItem["ControlField"]).Equals("NextPoNumber"))
{
nextPoReqNumber = (reťazec)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Previesť.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Umiestnenie, čítanie a aktualizácia číslo nákupnej objednávky v zozname.
} // pomocou spweb web = site.openweb()
} // pomocou spsite stránky = nové spsite("http://localhost/mizuho")
return nextPoReqNumber;
}
}