Er zijn vele goede voorbeelden van aangepaste lijsten via de SDK bijwerken. Hier is nog een andere.
Bedrijfsprobleem: InfoPath-formulier is ontworpen dat stelt gebruikers in staat om online vorderingen kopen. PO inkoopvoorstel getallen moet bestaan uit traditionele reeks gebaseerd integerwaarden en automatisch berekend.
Zakelijke oplossing: Een aangepaste MOSS lijst met twee kolommen maken: "ControlField" en "ControlValue". De kolom waarde bevat de volgende aankoop inkoopvoorstel nummer. Merk op dat het algemene "control" naamgevingsconventie voorziet in toekomstige controle velden die kunnen worden gebruikt als nodig.
Technische oplossing: Een webservice toegankelijk door de InfoPath-client maken. De webservice retourneert terug de volgende aankoop inkoopvoorstel nummer en de waarde van de lijst bijgewerkt.
Geleerde lessen:
- Wanneer deze webservice als gegevensbron toevoegen aan de InfoPath-formulier, Ik vond het nodig om te converteren naar een udc en opslaan in een bibliotheek met gegevensverbindingen.
- Ik vond het ook nodig om te schakelen tussen domeinen scripts via centrale diensten administratie // Toepassingsbeheer // de configuratie van de server van het formulier.
- De eerste keer het formulier probeert te openen van de webservice, het duurt een tijdje en bij gelegenheid, het zou tijd out. Rommelde ik met instellingen in de configuratie van de server van het formulier uit te breiden van de time-outinstellingen en welk toelijken voor steun.
De code:
met behulp van Systeem;
met behulp van System.Web;
met behulp van System.Web.Services;
met behulp van System.Web.Services.Protocols;
met behulp van Microsoft.SharePoint;
met behulp van System.Configuration;
[WebService(Namespace = 'http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
openbare klasse PoService : System.Web.Services.WebService
{
openbare PoService () {
//Uncomment de volgende regel als gebruikt ontworpen onderdelen
//InitializeComponent();
}
/// <Samenvatting>
/// De volgende PO-nummer te verkrijgen door de sharepoint po nummer control list.
/// _ / / Verhogen de PO-nummer in die lijst.
/// </Samenvatting>
/// <geeft als resultaat></geeft als resultaat>
[WebMethod]
openbare tekenreeks GetNextPoNumber()
{
tekenreeks SpPoControlSiteName; // Naam van de werkelijke MOSS-site die als host optreedt van de PO Control list.
tekenreeks SpPoControlListName; // Naam van de werkelijke MOSS lijst waarin het besturingselement Po.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
tekenreeks nextPoReqNumber = "xyzzy";
met behulp van (SPSite site = Nieuw SPSite(SpPoControlSiteName))
{
met behulp van (SPWeb Web = site. OpenWeb())
{
SPList currentList = web. Lijsten[SpPoControlListName];
foreach (SPItem controlItem in currentList.Items)
{
Als (((tekenreeks)controlItem["ControlField"]).Is gelijk aan("NextPoNumber"))
{
nextPoReqNumber = (tekenreeks)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Converteren.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Zoeken, lezen en bijwerken van de PO-nummer in de lijst.
} // met behulp van spweb web = site.openweb()
} // gebruik van spsite site = nieuwe spsite('http://localhost/mizuho")
terugkeer nextPoReqNumber;
}
}