Obstaja veliko dobrih primerov posodabljanje seznamov po meri prek SDK. Tukaj je še en.
Business problem: InfoPathov obrazec je bil oblikovan, da omogoča uporabnikom, da vnesejo online nakup zasegi. PO zahtevnice številke je treba tradicionalne zaporedje temelji celoštevilske vrednosti in samodejno izračuna.
Poslovnih rešitev: Ustvarite seznam po meri MOSS, ki vsebuje dva stolpca: "ControlField" in "ControlValue". V stolpcu vrednost je naslednja številka zahtevka za nabavo. Upoštevajte, da je generično "nadzor" poimenovanja predvideva prihodnje kontrolnik polja, ki se lahko uporabijo kot je potrebno.
Tehnično rešitev: Ustvarite spletno storitev dostopal InfoPath odjemalca. Spletna storitev vrne nazaj na naslednja številka zahtevka za nabavo in posodobi vrednost seznama.
Spoznanja:
- Pri dodajanju to spletno storitev kot vir podatkov InfoPathovega obrazca, Sem ugotovila, da je treba spremeniti to v a udc in shranjevanje v knjižnici podatkovnih povezav.
- Mi je tudi zdelo potrebno omogočiti navzkrižne domeno skriptno izvajanje prek centralne službe uprave // upravljanje programa // obliki strežnika konfiguracije.
- Prvič obliki poskušali dostopati do spletne storitve, To traja nekaj časa in včasih, To bi pavza. Sem fiddled s nastavitve v obliki konfiguracijo strežnika, da razširite nastavitve časovne omejitve in ki je zdelo, da pomaga.
Šifra:
z uporabo Sistem;
z uporabo System.Web;
z uporabo System.Web.Services;
z uporabo System.Web.Services.Protocols;
z uporabo Microsoft.SharePoint;
z uporabo System.Configuration;
[Spletna storitev(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
javnih razred PoService : System.Web.Services.Spletna storitev
{
javnih PoService () {
//Odkomentirate vrstico če using izdelane komponente
//InitializeComponent();
}
/// <povzetek>
/// Dobimo naslednjo številko PO seznamu sharepoint po število nadzor.
/// Prirastek številko PO tem seznamu.
/// </povzetek>
/// <Vrne></Vrne>
[WebMethod]
javnih niz GetNextPoNumber()
{
niz SpPoControlSiteName; // Ime dejansko MOSS mesto, ki gosti PO kontrolni seznam.
niz SpPoControlListName; // Ime dejansko MOSS seznam, ki vsebuje kontrolnik Po.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
niz nextPoReqNumber = "xyzzy";
z uporabo (»SPSite « stran = nove »SPSite «(SpPoControlSiteName))
{
z uporabo (SPWeb Spletna stran =. OpenWeb())
{
SPList.Update() currentList = spletni. Seznami[SpPoControlListName];
foreach (SPItem controlItem v currentList.Items)
{
Če (((niz)controlItem["ControlField"]).Je enako("NextPoNumber"))
{
nextPoReqNumber = (niz)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Pretvori.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Iskanje, branje in posodabljanje številko PO seznamu.
} // z uporabo spweb web = site.openweb()
} // z uporabo strani »SPSite« = nov spsite("http://localhost/mizuho")
vrnitev nextPoReqNumber;
}
}