వ్యాపారం దృశ్య:
వినియోగదారులు త్వరితంగా ఖచ్చితమైన కొనుగోలు అభ్యర్థనలకు ఎంటర్ చెయ్యడానికి ఒక పద్ధతి అందించండి.
వ్యాపారం సమస్య:
క్లయింట్ అనేక వందల విక్రేతలైన వ్యాపారం.
Vendors are "type" నిర్దిష్ట. ఈ ఒక అమ్మకందారుని కంప్యూటర్ పరికరాలు విక్రయిస్తుంది అర్థం (ఉదాహరణకు. చిన్న గుంట) లేదా కార్యాలయం సరఫరా (ఉదాహరణకు. స్టేపుల్స్).
ఎలా మేము కొనుగోలు అభ్యర్థనలకు సృష్టించే వినియోగదారులు ఒక చెల్లుబాటు అయ్యే విక్రేత ఎంచుకోండి ఎనేబుల్ చెయ్యాలి?
వ్యాపారం సొల్యూషన్:
"రకం" ద్వారా సిస్టమ్ వెండర్లు భేదం.
"రకం ఎంచుకోండి వినియోగదారులు ప్రారంభించు" ఉత్పత్తి మరియు తరువాత తగిన విక్రేతల ఒక ఫిల్టర్ ఇచ్చును.
సాంకేతిక పరిష్కారం:
ఒక InfoPath రూపం వినియోగదారులు ఆన్లైన్ కొనుగోలు అభ్యర్థనలకు ఎంటర్ చెయ్యడానికి రూపొందించబడింది.
రెండు InfoPath ఎంపిక జాబితాలు నియంత్రణ విక్రేత ఎంపిక. మొదటి, వినియోగదారు ఒక "కొనుగోలు రకం" ఎంపిక. ఈ కొనుగోలు రకం కోసం విక్రయించే మాత్రమే విక్రేతల కలిగి రెండవ ఎంపిక జాబితా పరిమితం. ఈ ఒక క్లాసిక్ కాస్కేడింగ్ డ్రాప్-డౌన్.
విక్రేతల అటువంటి పేరు విక్రేత లక్షణాలు సంప్రదాయక నిలువు ఒక MOSS కస్టమ్ జాబితాలో నిల్వ చేయబడతాయి, చిరునామా మరియు ముఖ్యంగా "రకం".
కస్టమ్ విక్రేత జాబితా ద్వారా iterates ఆ తినే ఒక InfoPath క్లయింట్ కోసం ఒక వెబ్ సేవ అమలు, ఒక సరఫరా "రకం" దొరకలేదు మాత్రమే విక్రేతలు తిరిగి.
InfoPath రూపం ద్వారా వెబ్ సేవను అర్థించడానికి.
నేర్చుకున్న పాఠాలు:
- మొదటి, ఈ మార్గం వెళ్ళడానికి అవసరమైన తెలుస్తోంది. నేను InfoPath పూర్తిగా వడపోత చేయండి మరియు ఇక్కడ ఏ వెబ్ సేవ కార్యాచరణను సృష్టించలేరు ప్రాధాన్యం ఉండేది. అయితే, రకాల సర్వర్ అవసరమైన వడపోత సామర్ధ్యం అందించడం లేదు. మేము ఒక "రకం లో ఒక నియమం ఉంచవచ్చు" తిరిగి తెరిచి విక్రేత ప్రశ్న యొక్క క్రమం రూపంలో ఎంపిక జాబితా, కానీ మేము అది సరిగా పని పొందలేము. కాబట్టి, వెబ్ సేవ అమలు అవసరం.
- ఈ ఒక క్లాసిక్ "కాస్కేడింగ్ ఎంపిక జాబితా" InfoPath రూపాలు సర్వర్ ప్రపంచంలో సమస్య అక్కడ ఈ పరిష్కరించడానికి ఎలా వివరించే బయట మంచి ఉదాహరణలు.
- ఈ వంటి సూచించారు ఉన్నప్పుడు విక్రేత జాబితాలో ఒక కాలమ్ ఖాళీ విలువ ఖాళీ స్ట్రింగ్ తిరిగి లేదు: initItem["Vendor పేరు"]. అందుకు బదులుగా, అది ఒక శూన్య తిరిగి.
కొన్ని ఇతర గమనికలు:
- నేను ఒక అర్రే తిరిగి[] విక్రేతల నేను ఒక ArrayList తిరిగి ఇబ్బందులను ఎందుకంటే. InfoPath దాని గురించి ఫిర్యాదు మరియు నేను దాని పై పోరాడటానికి సమయం లేదా వంపు లేదు. ఈ, కోర్సు యొక్క, విక్రేతల మొత్తం సంఖ్య కృత్రిమ పరిమితిని ఉంచుతుంది. ఇది కూడా ఒక ట్రిమ్ అమలు నాకు ఒత్తిడి() శ్రేణి పద్ధతి నేను శూన్య విక్రేతల 100 యొక్క తిరిగి తిరిగి ఆలోచనను ద్వేషం ఎందుకంటే. InfoPath పట్టించుకోరు, కానీ అది నాకు nagged. (మళ్ళీ, ఈ ArrayLists పైగా InfoPath పోరాట కంటే సులభంగా).
- నేను ఒక GetSpecificVendorByName అమలు() ఫంక్షన్ అలాగే, వివరణాత్మకంగా కావచ్చు.
కోడ్:
ఉపయోగించి వ్యవస్థ;
ఉపయోగించి System.Web;
ఉపయోగించి System.Web.Services;
ఉపయోగించి System.Web.Services.Protocols;
ఉపయోగించి Microsoft.SharePoint;
ఉపయోగించి System.Configuration;
/// <సంగ్రహము>
/// Vendor సర్వీస్: ఒక InfoPath క్లయింట్ రూపం ద్వారా సేవించాలి ఇవి నేడు విక్రేత సంబంధించిన సేవలను అందిస్తుంది.
///
/// చరిత్ర:
/// ——–
/// 07/24/07: ప్రారంభ కోడింగ్, పాల్ జె. Conchango గావిన్.
///
/// </సంగ్రహము>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ప్రజా తరగతి VendorService : System.Web.Services.WebService
{
/// <సంగ్రహము>
/// MSUSA ద్వారా నిర్వహించబడుతుంది కస్టమ్ SharePoint జాబితా నుండి ఒక విక్రేత సూచిస్తుంది.
/// </సంగ్రహము>
ప్రజా తరగతి విక్రేత
{
ప్రజా విక్రేత() { }
ప్రజా విక్రేత(ఉమ్మి initItem)
{
అయితే (! (initItem["Vendor పేరు"] == సున్న)) VendorName = initItem["Vendor పేరు"].ToString();
అయితే (! (initItem["చిరునామా 1"] == సున్న)) VendorAddress1 = initItem["చిరునామా 1"].ToString();
అయితే (! (initItem["2 చిరునామా"] == సున్న)) VendorAddress2 = initItem["2 చిరునామా"].ToString();
అయితే (! (initItem["సిటీ"] == సున్న)) VendorCity = initItem["సిటీ"].ToString();
అయితే (! (initItem["VendorPhone"] == సున్న)) VendorPhone = initItem["VendorPhone"].ToString();
అయితే (! (initItem["PurchaseType"] == సున్న)) VendorType = initItem["PurchaseType"].ToString();
అయితే (! (initItem["రాష్ట్రం"] == సున్న)) VendorState = initItem["రాష్ట్రం"].ToString();
అయితే (! (initItem["జిప్"] == సున్న)) VendorZip = initItem["జిప్"].ToString();
అయితే (!(initItem["ఫ్యాక్స్"] == సున్న)) VendorFax = initItem["ఫ్యాక్స్"].ToString();
అయితే (!(initItem["SalesRepName"] == సున్న)) VendorSalesRepName = initItem["SalesRepName"].ToString();
VendorItemId = initItem.ID; // MOSS ద్వారా నిర్వహించబడుతుంది ప్రత్యేక ID.
}
ప్రజా Int VendorItemId;
ప్రజా తీగ VendorName;
ప్రజా తీగ VendorAddress1;
ప్రజా తీగ VendorAddress2;
ప్రజా తీగ VendorCity;
ప్రజా తీగ VendorState;
ప్రజా తీగ VendorZip;
ప్రజా తీగ VendorPhone;
ప్రజా తీగ VendorType;
ప్రజా తీగ VendorSalesRepName;
ప్రజా తీగ VendorFax;
}
ప్రజా VendorService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
ప్రైవేట్ విక్రేత[] GenerateTestVendors()
{
విక్రేత[] resultlist;
resultlist = కొత్త విక్రేత[100];
విక్రేత v;
v = కొత్త విక్రేత();
v.VendorAddress1 = "v1_address1";
v.VendorAddress2 = "v1_address2";
v.VendorCity = "v1_city";
v.VendorName = "v1_vendorname";
v.VendorPhone = "v1_vendorphone";
v.VendorState =
v.VendorType = "v1_type";
v.VendorZip = "v1_zip";
resultlist[0] = V;
v = కొత్త విక్రేత();
v.VendorAddress1 = "v2_address1";
v.VendorAddress2 = "v2_address2";
v.VendorCity = "v2_city";
v.VendorName = "v2_vendorname";
v.VendorPhone = "v2_vendorphone";
v.VendorState = "v2_st";
v.VendorType = "v2_type";
v.VendorZip = "v2_zip";
resultlist[1] = V;
v = కొత్త విక్రేత();
v.VendorAddress1 = "v3_address1";
v.VendorAddress2 = "v3_address2";
v.VendorCity = "v3_city";
v.VendorName = "v3_vendorname";
v.VendorPhone = "v3_vendorphone";
v.VendorState = "v3_st";
v.VendorType = "v3_type";
v.VendorZip = "v3_zip";
resultlist[2] = V;
తిరిగి resultlist;
}
[WebMethod]
ప్రజా విక్రేత GetSpecificVendorById(Int vendorId)
{
తీగ SpVendorSiteName; // విక్రేత కస్టమ్ జాబితా హోస్ట్ అసలు MOSS సైట్ పేరు.
తీగ SpVendorListName; // విక్రేతల కలిగి వాస్తవ MOSS జాబితా పేరు.
SpVendorSiteName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorList"].ToString();
ఉపయోగించి (SPSite site = కొత్త SPSite(SpVendorSiteName))
{
ఉపయోగించి (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpVendorListName];
ఉమ్మి specificItem = currentList.Items[vendorId];
తిరిగి కొత్త విక్రేత(specificItem);
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
}
[WebMethod]
// విక్రేత పేరు ఏకైక అని ఊహించుకొని, ఒక వ్యాపార కోణం నుండి
ప్రజా విక్రేత GetSpecificVendorByVendorName(తీగ vendorName)
{
తీగ SpVendorSiteName; // విక్రేత కస్టమ్ జాబితా హోస్ట్ అసలు MOSS సైట్ పేరు.
తీగ SpVendorListName; // విక్రేతల కలిగి వాస్తవ MOSS జాబితా పేరు.
SpVendorSiteName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorList"].ToString();
ఉపయోగించి (SPSite site = కొత్త SPSite(SpVendorSiteName))
{
ఉపయోగించి (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpVendorListName];
foreach (ఉమ్మి vendorItem లో currentList.Items)
{
అయితే (vendorItem["Vendor పేరు"] == సున్న) కొనసాగించు;
అయితే (vendorItem["Vendor పేరు"].ToString().సమానం(vendorName))
తిరిగి కొత్త విక్రేత(vendorItem);
}
విక్రేత v = కొత్త విక్రేత();
v.VendorPhone = "దొరకలేదు: " + vendorName;
తిరిగి v;
తిరిగి సున్న;
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
} // పద్ధతి
[WebMethod]
ప్రజా విక్రేత[] GetVendorsOfType (తీగ ఫిల్టర్ రకం)
{
తీగ SpVendorSiteName; // T హోస్ట్ అసలు MOSS సైట్ పేరు
అతను విక్రేత కస్టమ్ జాబితా.
తీగ SpVendorListName; // విక్రేతల కలిగి వాస్తవ MOSS జాబితా పేరు.
SpVendorSiteName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["VendorList"].ToString();
విక్రేత[] resultlist;
Int vendorIndex = 0;
resultlist = కొత్త విక్రేత[1000];
// ఒక డిఫాల్ట్ స్నేహపూర్వక సందేశంతో జాబితా ప్రారంభించడం.
విక్రేత v = కొత్త విక్రేత();
v.VendorName = "ఈ జాబితా జనసాంద్రత ఒక విక్రేత రకం ఎంచుకోండి.";
resultlist[0] = V;
// తరువాత సులభంగా స్ట్రింగ్ పోలిక బడిలోని వడపోత మార్చండి.
filterType = filterType.ToLower();
// ఆమోదించింది వడపోత రకం "పరీక్ష" ఉంటే, కొన్ని సాధారణ దత్తాంశాన్ని తయారుచేస్తాయి.
#ప్రాంతం వడపోత రకం = "పరీక్ష"
అయితే (filterType.Equals("test"))
తిరిగి GenerateTestVendors();
#endregion
అయితే (నిజమైన)
{
ఉపయోగించి (SPSite site = కొత్త SPSite(SpVendorSiteName))
{
ఉపయోగించి (SPWeb web = site.OpenWeb())
{
v = సున్న;
SPList currentList = web.Lists[SpVendorListName];
// విక్రేత జాబితాలో అన్ని అంశాలను ద్వారా iterate.
foreach (ఉమ్మి vendorItem లో currentList.Items)
{
తీగ lowerVendorType;
lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);
అయితే (lowerVendorType.Equals(ఫిల్టర్ రకం))
{
resultlist[vendorIndex ] = కొత్త విక్రేత(vendorItem);
}
} // జాబితాలో అన్ని విక్రేతలు త్రూ iterating
తిరిగి TrimVendorArray(vendorIndex, resultlist);
// resultlist తిరిగి;
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
} // నిజమైన ఉంటే
తిరిగి సున్న;
}
ప్రైవేట్ విక్రేత[] TrimVendorArray(Int newsize, విక్రేత[] originalVendorArray)
{
విక్రేత[] trimmedArray;
అయితే (న్యూస్ == 0) = On న్యూస్ 1;
trimmedArray = కొత్త విక్రేత[newsize];
Int currentCounter = 0;
కోసం (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = OriginalVendorArray[currentCounter];
}
తిరిగి trimmedArray;
}
}