MOSS: Diweddaru rhestr arfer

Mae llawer o enghreifftiau da o ddiweddaru rhestrau arfer drwy'r SDK. Dyma arall eto.

Problem Busnes: Ffurflen InfoPath wedi'i gynllunio sy'n galluogi defnyddwyr i fynd i mewn archebion prynu ar-lein. Dylai'r rhifau Ymholiad PO fod yn werthoedd cyfanrif yn seiliedig ar ddilyniant traddodiadol a chyfrifo yn awtomatig.

Ateb Busnes: Creu rhestr MOSS arfer yn cynnwys dwy golofn: "ControlField" a "ControlValue". Mae y golofn gwerth cynnwys Rhif yr archeb brynu nesaf. Yn nodi bod y generig "rheoli" Mae'r confensiwn enwi yn darparu ar gyfer rheoli dyfodol meysydd y gellir eu defnyddio yn ôl yr angen.

Ateb technegol: Creu gwasanaeth gwe ar gael gan y cleient InfoPath. Mae gwasanaeth y we yn dychwelyd yn ôl Rhif yr archeb brynu nesaf ac yn diweddaru'r gwerth y rhestr.

Gwersi a Ddysgwyd:

  • Wrth ychwanegu gwasanaeth gwe hwn fel ffynhonnell data ffurflen InfoPath, Chael hi'n angenrheidiol i droi yn cyfeiriant a'i storio yn Llyfrgell cysylltiad data.
  • Hefyd cefais ei bod yn angenrheidiol er mwyn galluogi sgriptio parth traws drwy weinyddu gwasanaethau canolog // Rheoli cais // ffurfweddu gweinydd ffurflen.
  • Y tro cyntaf ar ffurf yn ceisio cael gafael ar y gwasanaeth gwe, Mae'n cymryd amser ac ar adegau, Byddai amser allan. Yr wyf ffidlan gyda lleoliadau ar ffurf ffurfweddiad gweinydd i ehangu'r gosodiadau goramser a oedd yn ymddangos i helpu.

Mae'r cod:

gan ddefnyddio System;
gan ddefnyddio System.Web;
gan ddefnyddio System.Web.Services;
gan ddefnyddio System.Web.Services.Protocols;
gan ddefnyddio Microsoft.SharePoint;
gan ddefnyddio System.Configuration;

[Webservice(Bwlchenw = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
cyhoeddus dosbarth PoService : System.Web.Services.Webservice
{
cyhoeddus PoService () {

//Uncomment Cynlluniodd y llinell ganlynol os ydych yn defnyddio cydrannau
//InitializeComponent();
}

/// <crynodeb>
/// Gael y Rhif y Llywydd nesaf o'r rhestr rheoli Rhif sharepoint y Llywydd.
/// Cynyddran y Llywydd nifer yn y rhestr honno.
/// </crynodeb>
/// <ffurflenni></ffurflenni>
[WebMethod]
cyhoeddus llinyn GetNextPoNumber()
{
llinyn SpPoControlSiteName; // Enw'r safle MOSS gwirioneddol sy'n lletya'r y rhestr rheoli y Llywydd.
llinyn SpPoControlListName; // Enw o'r rhestr MOSS gwirioneddol sy'n cynnwys y rheolydd y Llywydd.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

llinyn nextPoReqNumber = "xyzzy";

gan ddefnyddio (SPSite safle = newydd SPSite(SpPoControlSiteName))
{
gan ddefnyddio (SPWeb we = safle. OpenWeb())
{

SPList currentList = we. Rhestrau[SpPoControlListName];

foreach (Poeri controlItem yn currentList.Items)
{

os (((llinyn)controlItem["ControlField"]).Equals("NextPoNumber"))
{
nextPoReqNumber = (llinyn)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Trosi.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Lleoli, darllen a diweddaru nifer y Llywydd yn y rhestr.


} // ddefnyddio'r we spweb = site.openweb()
} // defnyddio'r safle spsite = spsite newydd("http://localhost/mizuho")

dychwelyd nextPoReqNumber;

}
}

Roedd un o'r farn ar "MOSS: Diweddaru rhestr arfer

  1. Ysgrifennodd KSP:
    Hi Paul,
    Mae gennym sefyllfa debyg beth yr ydych yn ei grybwyll, ond y broblem yw yr wyf am ddefnyddio'r gwasanaeth hwn we ar weinydd cydbwysedd llwyth. Felly,sut i ymdrin â cheisiadau concurrency yn yr achos hwn neu sut i wneud cais newydd dylid aros a dim ond un cais yn diweddaru nifer y rhestr til yna dylid holl geisiadau eraill yn que. Rhowch wybod i mi sut i gyflawni hyn.
    Ddiolch i mewn Ymlaen Llaw.
    Ateb

Ad a Ateb i Ysgrifennodd KSP: Diddymu ateb

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Meysydd gofynnol yn cael eu marcio *