MOSS: Ažuriranje prilagođeni popis

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;

}
}

Jedna misao o „MOSS: Ažuriranje prilagođeni popis

  1. KSP wrote:
    Hi Pavao,
    We have a similar situation what you are mentioning but the problem is i want to use this web servie on a load balance server.Hence,how to handle concurrency requests in this case or how to make the new request wait and only one request should update the list number till then all other requests should be in que.Please let me know how to achieve this.
    Hvala unaprijed.

Dopust jedan Odgovor

Vaša email adresa neće biti objavljena. obavezna polja su označena *