Există multe exemple bune liste particularizate prin intermediul SDK-ul de actualizare. Aici este încă un alt.
Problema de afaceri: Formular InfoPath a fost conceput, care permite utilizatorilor să intre online cumpăraţi rechiziţiile. PO aprovizionare numere ar trebui să fie secvenţă tradiţionale bazate pe valori şi calculează automat.
Soluţie de afaceri: Crea o listă personalizată de muşchi care conţine două coloane: "ControlField" şi "ControlValue". Coloana valoare conţine următorul număr de aprovizionare cumpărare. Reţineţi că generic "control" Convenţia prevede controlul viitoare câmpuri care pot fi utilizate după cum este necesar.
Soluţii tehnice: Creaţi un serviciu web accesate de catre client de InfoPath. Serviciul web se întoarce înapoi la următorul număr de aprovizionare de cumpărare şi actualizează valoarea de listă.
Lecţiile învăţate:
- Când adăugaţi acest serviciu web ca o sursă de date formular InfoPath, L-am găsit necesar să convertizor it la spre un CZU şi stocaţi-o într-o bibliotecă de conexiuni de date.
- Am găsit-o, de asemenea, necesare pentru a permite transdomeniu scripting prin intermediul serviciilor centrale administraţiei // management aplicație // formular de configurare a serverului.
- Prima data încercat forma pentru a accesa serviciul web, este nevoie de o perioada de timp şi cu ocazia, ar fi timpul. Am gadila cu setările în formă de server de configurare pentru a extinde setările de expirare şi care părea să ajute.
Codul:
folosind Sistem;
folosind System.Web;
folosind System.Web.Services;
folosind System.Web.Services.Protocols;
folosind Microsoft.SharePoint;
folosind System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publice Clasa PoService : System.Web.Services.WebService
{
publice PoService () {
//Decomentaţi următoarea linie dacă utilizaţi componentele proiectate
//InitializeComponent();
}
/// <Rezumat>
/// Obţine următorul număr PO la po numărul de control listă sharepoint.
/// Incrementului PO numărul în listă.
/// </Rezumat>
/// <întoarce></întoarce>
[WebMethod]
publice şir GetNextPoNumber()
{
şir SpPoControlSiteName; // Numele site-ului MOSS reale care găzduieşte lista de PO Control.
şir SpPoControlListName; // Numele din lista de MOSS reale care conţine controlul Po.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
şir nextPoReqNumber = "xyzzy";
folosind (SPSite site-ul = noi SPSite(SpPoControlSiteName))
{
folosind (SPWeb web = site-ul. OpenWeb())
{
SPList.Update() currentList = web. Liste[SpPoControlListName];
foreach (SPItem controlItem în currentList.Items)
{
Dacă (((şir)controlItem["ControlField"]).Este egal cu("NextPoNumber"))
{
nextPoReqNumber = (şir)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Conversia.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Localizarea, lectură şi actualizarea PO numărul din lista.
} // folosind spweb web = site.openweb()
} // folosind site-ul spsite = nou spsite("http://localhost/mizuho")
reveni nextPoReqNumber;
}
}