Maraming mga mahusay na mga halimbawa ng mga pag-update ng mga pasadyang mga listahan sa pamamagitan ng SDK. Narito ang isa pang.
Business problema: InfoPath form na ay dinisenyo na nagbibigay-daan sa mga gumagamit upang ipasok ang mga online na pagbili requisitions. Mga numero ng PO pag-uutos ay dapat na tradisyonal na pagkakasunud-sunod batay sa mga halaga ng integer at kinakalkula awtomatikong.
Business Solusyon: Lumikha ng isang pasadyang listahan Moss na naglalaman ng dalawang mga hanay: "ControlField" and "ControlValue". Ang halaga haligi ay naglalaman ng susunod na pagbili bilang pag-uutos. Note that the generic "control" pagbibigay ng pangalan sa convention ay nagbibigay ng para sa hinaharap na mga patlang ng control na maaaring gamitin bilang kinakailangan.
Teknikal na Solusyon: Lumikha ng isang serbisyo sa web access ng mga client InfoPath. Ang web serbisyo ay nagbabalik bumalik sa susunod na pagbili hingi numero at update ang halaga ng listahan.
Aralin natutunan:
- Kapag idinadagdag ang serbisyo sa web bilang isang pinagmumulan ng data sa form InfoPath, May nakita akong ito kinakailangan upang i-convert ito sa isang udc at mag-imbak ito sa isang library data koneksyon.
- Din ako nahanap ito na kinakailangan upang paganahin ang krus domain scripting sa pamamagitan ng gitnang mga serbisyo ng administrasyon // application ng pamamahala // form ng configuration ng server.
- Ang unang pagkakataon na ang form na sinubukan upang ma-access ang mga serbisyo sa web, ito ay tumatagal ng isang sandali at paminsan-minsan, Gusto ito time out. Fiddled ko na may mga setting sa form na configuration ng server upang palawakin ang timeout mga setting at na tila upang matulungan.
Ang code:
paggamit Sistema;
paggamit System.Web;
paggamit System.Web.Services;
paggamit System.Web.Services.Protocols;
paggamit Microsoft.SharePoint;
paggamit System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publiko klase PoService : System.Web.Services.WebService
{
publiko PoService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
/// <buod>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </buod>
/// <return></return>
[WebMethod]
publiko pisi GetNextPoNumber()
{
pisi SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
pisi SpPoControlListName; // Name of the actual MOSS list containing the Po control.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
pisi nextPoReqNumber = "xyzzy";
paggamit (SPSite site = bago SPSite(SpPoControlSiteName))
{
paggamit (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
foreach (Magtuhog controlItem sa currentList.Items)
{
kung (((pisi)controlItem["ControlField"]).Kapantay("NextPoNumber"))
{
nextPoReqNumber = (pisi)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Magpasampalatya.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")
bumalik nextPoReqNumber;
}
}