MUSCHIO: L'aggiornamento di un elenco personalizzato

Ci sono molti buoni esempi di aggiornamento elenchi personalizzati tramite il SDK. Qui è ancora un altro.

Problema aziendale: Modulo di InfoPath è stato progettato che permette agli utenti di immettere online acquistano requisizioni. Requisizione PO numeri dovrebbero essere la sequenza tradizionale basato su valori integer e calcolati automaticamente.

Soluzione di business: Creare un elenco personalizzato di MOSS contenente due colonne: "ControlField" e "ControlValue". Colonna valore contiene il numero della richiesta di acquisto successivo. Si noti che il generico "controllo" Convenzione di denominazione fornisce i campi di controllo futuro che possono essere utilizzati come necessario.

Soluzione tecnica: Creare un servizio web accessibile dal client InfoPath. Il servizio web restituisce indietro il successivo numero della richiesta di acquisto e aggiorna il valore della lista.

Lezioni apprese:

  • Quando si aggiunge questo servizio web come origine dati per il modulo di InfoPath, Ritenuto necessario convertirlo in un udc e memorizzarlo in una raccolta connessioni dati.
  • Anche trovato necessario attivare tra domini scripting tramite Amministrazione centrale servizi // gestione applicazioni // configurazione del server di forma.
  • La prima volta il modulo provato ad accedere al servizio web, ci vuole un po' di tempo e in occasione, sarebbe tempo fuori. I giocherellava con le impostazioni nella configurazione del server di forma per espandere le impostazioni di timeout e che sembrava di aiutare.

Il codice:

utilizzando Sistema;
utilizzando System. Web;
utilizzando System.Web.Services;
utilizzando Protocols;
utilizzando Microsoft. SharePoint;
utilizzando System. Configuration;

[WebService(Namespace = "http://www.Conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
pubblica classe PoService : System.Web.Services.WebService
{
pubblica PoService () {

//Decommentare la seguente riga se utilizza componenti progettati
//InitializeComponent();
}

/// <Riassunto>
/// Ottenere il numero di PO successivo dall'elenco sharepoint po numero controllo.
/// Incrementare il numero di PO in quella lista.
/// </Riassunto>
/// <restituisce></restituisce>
[WebMethod]
pubblica stringa GetNextPoNumber()
{
stringa SpPoControlSiteName; // Nome del sito MOSS effettivo che ospita l'elenco di controllo di PO.
stringa SpPoControlListName; // Nome dell'elenco effettivo di MOSS che contiene il controllo di Po.

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

stringa nextPoReqNumber = "xyzzy";

utilizzando (SPSite sito = Nuovo SPSite(SpPoControlSiteName))
{
utilizzando (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Elenchi[SpPoControlListName];

foreach (SPItem controlItem in currentList.Items)
{

Se (((stringa)controlItem["ControlField"]).È uguale a("NextPoNumber"))
{
nextPoReqNumber = (stringa)controlItem["ControlValue"];

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

int_nextPoReqNumber ;

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

} // Individuazione, lettura e l'aggiornamento il numero di PO nell'elenco.


} // utilizzando spweb web = site.openweb()
} // utilizzando il sito spsite = nuovo spsite("http://localhost/mizuho")

ritorno nextPoReqNumber;

}
}

Un pensiero su "MUSCHIO: L'aggiornamento di un elenco personalizzato

  1. KSP ha scritto:
    Ciao Paolo,
    Abbiamo una situazione simile cosa sono menzionare, ma il problema è che voglio usare questo servie web su un server di bilanciamento del carico.Da qui,come gestire le richieste della concorrenza in questo caso o come fare la nuova richiesta attesa e solo una richiesta dovrebbe aggiornare il numero di elenco fino allora tutte le altre richieste dovrebbero essere in que.Per favore fatemi sapere come raggiungere questo obiettivo.
    Grazie in anticipo.
    Risposta

Lasciare una risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *