Hemm ħafna eżempji ta 'aġġornar listi dwana permezz tal-SDK. Hawnhekk huwa pass ieħor.
Problema Business: Forma InfoPath ġie ddisinjat li jippermetti lill-utenti li jidħlu requisitions xiri online. Numri rekwiżizzjoni PO għandhom ikunu l-valuri integer bbażati sekwenza tradizzjonali u ikkalkolat awtomatikament.
Soluzzjoni tan-Negozju: Tinħoloq lista MOSS custom fiha żewġ kolonni: "ControlField" and "ControlValue". Il-kolonna valur fih in-numru rekwiżizzjoni xiri li jmiss. Note that the generic "control" ismijiet konvenzjoni jipprovdi għal oqsma futuri tal-kontroll li jistgħu jintużaw kif meħtieġ.
Soluzzjoni teknika: Jinħoloq servizz web aċċessata mill-klijent InfoPath. Is-servizz web jirritorna lura l-għadd li jmiss rekwiżizzjoni xiri u taġġorna l-valur tal-lista.
Lezzjonijiet Meħuda:
- Meta żżid dan is-servizz web bħala sors ta 'data għall-forma InfoPath, I sabet li kien meħtieġ li jaqilbu għal UDC u jaħżnu fi librerija konnessjoni tad-data.
- I wkoll sabet li hu meħtieġ biex jippermetti cross dominju scripting permezz ċentrali amministrazzjoni servizzi // ġestjoni applikazzjoni // konfigurazzjoni server forma.
- L-ewwel darba l-formola ppruvat taċċessa s-servizz web, hija tieħu filwaqt u f'okkażjoni, ikun Time Out. I fiddled mal-settings fil-konfigurazzjoni server formola biex jespandu l-settings timeout u li dehret li jgħinu.
Il-kodiċi:
użu Sistema;
użu System.Web;
użu System.Web.Services;
użu System.Web.Services.Protocols;
użu Microsoft.SharePoint;
użu System.Configuration;
[Webservice(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
pubbliku klassi PoService : System.Web.Services.Webservice
{
pubbliku PoService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
/// <sommarju>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </sommarju>
/// <prospetti></prospetti>
[WebMethod]
pubbliku string GetNextPoNumber()
{
string SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
string SpPoControlListName; // Name of the actual MOSS list containing the Po control.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
string nextPoReqNumber = "xyzzy";
użu (SPSite site = ġdid SPSite(SpPoControlSiteName))
{
użu (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
foreach (Bżiq controlItem fil currentList.Items)
{
jekk (((string)controlItem["ControlField"]).Ugwali("NextPoNumber"))
{
nextPoReqNumber = (string)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Ikkonverti.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")
ritorn nextPoReqNumber;
}
}