Postoje mnogi dobri primjeri ažuriranje prilagođene popise preko SDK. Ovdje je još jedan.
Poslovni problem: InfoPath obrazac je osmišljen koji omogućava korisnicima da unesete online kupnju obespravljivanja. Brojevi narudžbenica rekvizicije bi trebao biti tradicionalni slijed temelju cjelobrojne vrijednosti, a izračunava se automatski.
Poslovno rješenje: Stvaranje prilagođene Moss popis koji sadrži dva stupca: "ControlField" and "ControlValue". Vrijednost stupac sadrži sljedeći broj kupnju rekvizicije. Note that the generic "control" imenovanja konvencija predviđa buduće kontrole polja koja se mogu koristiti po potrebi.
Tehničko rješenje: Napravite web uslugu pristupa putem InfoPath klijentom. Web-usluga vraća sljedeći broj kupnju rekvizicije i ažurira vrijednost na popisu.
Lekcije naučene:
- Kod dodavanja ovu web servis kao izvor podataka za InfoPath obrasca, Otkrio sam da je potrebno pretvoriti ga u UDK i pohraniti u knjižnicu podatkovne veze.
- Također sam pronašao da je potrebno omogućiti unakrsna domene skripti putem usluga središnje uprave // aplikacija za upravljanje // Obrazac konfiguracije poslužitelja.
- Prvi put pokušao obrazac za pristup web-usluge, to traje neko vrijeme, a povodom, da bi time out. Ja fiddled s postavkama u obliku poslužitelja konfiguraciji proširiti vremena isključivanja postavke i da se činilo da bi.
Kod:
pomoću Sustav;
pomoću System.Web;
pomoću System.Web.Services;
pomoću System.Web.Services.Protocols;
pomoću Microsoft.SharePoint;
pomoću System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
javni klasa PoService : System.Web.Services.WebService
{
javni PoService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
/// <rezime>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </rezime>
/// <se vraća></se vraća>
[WebMethod]
javni niz GetNextPoNumber()
{
niz SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
niz SpPoControlListName; // Name of the actual MOSS list containing the Po control.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
niz nextPoReqNumber = "xyzzy";
pomoću (SPSite site = novi SPSite(SpPoControlSiteName))
{
pomoću (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
foreach (SPItem controlItem u currentList.Items)
{
ako (((niz)controlItem["ControlField"]).Jednako("NextPoNumber"))
{
nextPoReqNumber = (niz)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Pretvoriti.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Locating, reading and updating the PO number in the list.
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
povratak nextPoReqNumber;
}
}