SDK ద్వారా కస్టమ్ జాబితాలు నవీకరించుటకు అనేక మంచి ఉదాహరణలు ఉన్నాయి. ఇక్కడ మరో ఉంది.
వ్యాపారం సమస్య: InfoPath రూపం వినియోగదారులు ఆన్లైన్ కొనుగోలు అభ్యర్థనలకు ఎంటర్ చెయ్యడానికి రూపొందించబడింది. PO వ్రాతపూర్వకమైన ఆదేశము సంఖ్యలు సాంప్రదాయిక సన్నివేశాన్ని ఆధారిత పూర్ణాంక విలువలను మరియు స్వయంచాలకంగా లెక్కించిన ఉండాలి.
వ్యాపారం సొల్యూషన్: రెండు నిలువు కలిగి కస్టమ్ MOSS జాబితా సృష్టించు: "ControlField" and "ControlValue". విలువ కాలమ్ తదుపరి కొనుగోలు వ్రాతపూర్వకమైన ఆదేశము సంఖ్యను కలిగి. Note that the generic "control" సమావేశం నామకరణ అవసరమైన ఉపయోగించే భవిష్యత్ నియంత్రణ ఖాళీలను అందిస్తుంది.
సాంకేతిక పరిష్కారం: InfoPath క్లయింట్ ప్రాప్తి ఒక వెబ్ సేవ సృష్టించు. వెబ్ సేవ తిరిగి తదుపరి కొనుగోలు వ్రాతపూర్వకమైన ఆదేశము సంఖ్య మరియు నవీకరణలను జాబితా విలువ తిరిగి.
నేర్చుకున్న పాఠాలు:
- InfoPath రూపం ఒక డేటా మూలం వెబ్ సేవ చేర్చేటప్పుడు, నేను అవసరం ఒక UDC మార్పిడి మరియు ఒక డేటా కనెక్షన్ లైబ్రరీ లోకి నిల్వ కనుగొన్నారు.
- నేను కూడా ఇది అవసరం కేంద్ర సేవలు పరిపాలన ద్వారా క్రాస్ డొమైన్ స్క్రిప్టింగ్ ప్రారంభించడానికి దొరకలేదు // అప్లికేషన్ నిర్వహణ // రూపం సర్వర్ కాన్ఫిగరేషన్.
- మొదటిసారి రూపం వెబ్ సేవ యాక్సెస్ చేసేందుకు ప్రయత్నించారు, కొంత సమయం పడుతుంది మరియు సందర్భంగా, దాన్ని సమయం ఉంటుంది. నేను సమయం ముగిసింది సెట్టింగులను విస్తరించేందుకు రూపం సర్వర్ కాన్ఫిగరేషన్ సెట్టింగులు తో fiddled మరియు సహాయం కనిపించింది.
కోడ్:
ఉపయోగించి వ్యవస్థ;
ఉపయోగించి System.Web;
ఉపయోగించి System.Web.Services;
ఉపయోగించి System.Web.Services.Protocols;
ఉపయోగించి Microsoft.SharePoint;
ఉపయోగించి System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ప్రజా తరగతి PoService : System.Web.Services.WebService
{
ప్రజా PoService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
/// <సంగ్రహము>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </సంగ్రహము>
/// <తిరిగి></తిరిగి>
[WebMethod]
ప్రజా తీగ GetNextPoNumber()
{
తీగ SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
తీగ SpPoControlListName; // Name of the actual MOSS list containing the Po control.
SpPoControlSiteName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["PoControlList"].ToString();
తీగ nextPoReqNumber = "xyzzy";
ఉపయోగించి (SPSite site = కొత్త SPSite(SpPoControlSiteName))
{
ఉపయోగించి (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
foreach (ఉమ్మి controlItem లో currentList.Items)
{
అయితే (((తీగ)controlItem["ControlField"]).సమానం("NextPoNumber"))
{
nextPoReqNumber = (తీగ)controlItem["ControlValue"];
Int int_nextPoReqNumber;
int_nextPoReqNumber = రూపంలో మార్పు తెచ్చు.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")
తిరిగి nextPoReqNumber;
}
}