ব্যবসা দৃশ্যকল্প:
ব্যবহারকারীদের দ্রুত সঠিক ক্রয় requisitions প্রবেশ করতে সক্ষম হবেন যে একটি পদ্ধতি প্রদান.
ব্যবসায় সমস্যা:
ক্লায়েন্ট কয়েক শত বিক্রেতাদের সাথে ব্যবসা আছে.
Vendors are "type" নির্দিষ্ট. এটি একটি বিক্রেতার কম্পিউটার সরঞ্জাম বিক্রি করে যে অর্থ (e.g. ডেল) বা অফিসে সরবরাহ (e.g. Staples).
কিভাবে আমরা ক্রয় requisitions তৈরি যারা অন্তিম ব্যবহারকারীদের একটি বৈধ বিক্রেতা নির্বাচন সক্রিয় করবো?
ব্যবসা সমাধান:
Differentiate vendors in the system via "type".
Enable users to select the "type" পণ্য এবং তারপর উপযুক্ত বিক্রেতাদের একটি ফিল্টার সেট প্রদান করে.
প্রযুক্তি সমাধান:
একটি InfoPath ফর্ম ব্যবহারকারীদের অনলাইন ক্রয় requisitions প্রবেশ করতে সক্ষম হবেন যে ডিজাইন করা হয়েছে.
দুই InfoPath নির্বাচন তালিকা নিয়ন্ত্রণ বিক্রেতা নির্বাচন. প্রথম, the user selects a "purchase type". This limits a second selection list to contain only vendors that sell for that purchase type. This is a classic cascading drop-down.
বিক্রেতারা যেমন নামের বিক্রেতার বৈশিষ্ট্যের জন্য কাস্টম কলাম সঙ্গে MOSS কাস্টম তালিকা সংরক্ষণ করা হয়, address and especially "type".
কাস্টম বিক্রেতার তালিকা মাধ্যমে iterates যে গ্রাস একটি InfoPath ক্লায়েন্টের জন্য একটি ওয়েব পরিষেবা বাস্তবায়ন, returning only vendors matching a supplied "type".
InfoPath ফর্ম এর মাধ্যমে ওয়েব সার্ভিস ডাকা.
শিখেছি পাঠ:
- প্রথম, এই রুট যেতে প্রয়োজনীয় বলে মনে হয়. আমি InfoPath মধ্যে সম্পূর্ণরূপে ফিল্টারিং করতে এবং এখানে যে কোনো ওয়েব পরিষেবা বৈশিষ্ট্য তৈরি করতে আপনি পছন্দ করে. কিন্তু, ফর্ম সার্ভার প্রয়োজনীয় ফিল্টারিং ক্ষমতা উপলব্ধ করা হয় না. We can put a rule onto a the "type" পুনরায় খোলার বিক্রেতা কোয়্যারীর বাছাই আকারে নির্বাচন তালিকা, কিন্তু আমরা তা সঠিকভাবে কাজ পেতে পারে না. সেইজন্য, এটি ওয়েব সেবা বাস্তবায়ন করার প্রয়োজন ছিল.
- This is a classic "cascading selection list" InfoPath ফর্ম সার্ভার বিশ্বের সমস্যা এবং সেখানে এই সমাধান কিভাবে ব্যাখ্যা যে অনেক ভাল উদাহরণ আছে.
- ভালো রেফারেন্সড যখন বিক্রেতার তালিকায় একটি কলামের জন্য একটি ফাঁকা মান একটি খালি স্ট্রিং রিটার্ন করে না: initItem["Vendor Name"]. পরিবর্তে, এটি একটি নাল ফেরৎ.
অন্য কিছু নোট:
- আমি একটি অ্যারের ফিরে[] বিক্রেতারা আমি একটি ArrayList ফিরে কিছু অসুবিধা ছিল, কারণ. InfoPath এটা সম্পর্কে অভিযোগ ছিল এবং আমি এটা উপর যুদ্ধ সময় বা বাঁক আছে কি না. এই, স্বভাবত, বিক্রেতারা মোট সংখ্যার উপর একটি কৃত্রিম সীমা রাখে. এটি একটি ছাঁটা বাস্তবায়ন সম্পর্কে বাধ্য() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath গ্রাহ্য না করে, কিন্তু এটা আমার nagged. (আবার, এই ArrayLists ওভার InfoPath যুদ্ধ চেয়ে সহজ ছিল).
- আমি একটি GetSpecificVendorByName বাস্তবায়িত() ফাংশন হিসাবে ভাল, শিক্ষামূলক হতে পারে.
কোড:
ব্যবহার সিস্টেম;
ব্যবহার System.Web;
ব্যবহার System.Web.Services;
ব্যবহার System.Web.Services.Protocols;
ব্যবহার Microsoft.SharePoint;
ব্যবহার System.Configuration;
/// <সারাংশ>
/// Vendor Service: Provides vendor related services which today are consumed by an infopath client form.
///
/// History:
/// ——–
/// 07/24/07: Initial coding, Paul J. Gavin of Conchango.
///
/// </সারাংশ>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
জনসাধারণের বর্গ VendorService : System.Web.Services.WebService
{
/// <সারাংশ>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </সারাংশ>
জনসাধারণের বর্গ Vendor
{
জনসাধারণের Vendor() { }
জনসাধারণের Vendor(বিদ্বেষ initItem)
{
যদি (! (initItem["Vendor Name"] == শূন্য)) VendorName = initItem["Vendor Name"].ToString();
যদি (! (initItem["Address 1"] == শূন্য)) VendorAddress1 = initItem["Address 1"].ToString();
যদি (! (initItem["Address 2"] == শূন্য)) VendorAddress2 = initItem["Address 2"].ToString();
যদি (! (initItem["City"] == শূন্য)) VendorCity = initItem["City"].ToString();
যদি (! (initItem["VendorPhone"] == শূন্য)) VendorPhone = initItem["VendorPhone"].ToString();
যদি (! (initItem["PurchaseType"] == শূন্য)) VendorType = initItem["PurchaseType"].ToString();
যদি (! (initItem["State"] == শূন্য)) VendorState = initItem["State"].ToString();
যদি (! (initItem["Zip"] == শূন্য)) VendorZip = initItem["Zip"].ToString();
যদি (!(initItem["Fax"] == শূন্য)) VendorFax = initItem["Fax"].ToString();
যদি (!(initItem["SalesRepName"] == শূন্য)) VendorSalesRepName = initItem["SalesRepName"].ToString();
VendorItemId = initItem.ID; // Unique ID maintained via MOSS.
}
জনসাধারণের int-এ VendorItemId;
জনসাধারণের স্ট্রিং VendorName;
জনসাধারণের স্ট্রিং VendorAddress1;
জনসাধারণের স্ট্রিং VendorAddress2;
জনসাধারণের স্ট্রিং VendorCity;
জনসাধারণের স্ট্রিং VendorState;
জনসাধারণের স্ট্রিং VendorZip;
জনসাধারণের স্ট্রিং VendorPhone;
জনসাধারণের স্ট্রিং VendorType;
জনসাধারণের স্ট্রিং VendorSalesRepName;
জনসাধারণের স্ট্রিং VendorFax;
}
জনসাধারণের VendorService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
ব্যক্তিগত Vendor[] GenerateTestVendors()
{
Vendor[] resultList;
resultList = নতুন Vendor[100];
Vendor v;
v = নতুন Vendor();
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 = নতুন Vendor();
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 = নতুন Vendor();
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]
জনসাধারণের Vendor GetSpecificVendorById(int-এ vendorId)
{
স্ট্রিং SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
স্ট্রিং SpVendorListName; // Name of the actual MOSS list containing vendors.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
ব্যবহার (SPSite site = নতুন SPSite(SpVendorSiteName))
{
ব্যবহার (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpVendorListName];
বিদ্বেষ specificItem = currentList.Items[vendorId];
প্রত্যাবর্তন নতুন Vendor(specificItem);
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
}
[WebMethod]
// Assumes that the vendor name is unique, from a business perspective
জনসাধারণের Vendor GetSpecificVendorByVendorName(স্ট্রিং vendorName)
{
স্ট্রিং SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
স্ট্রিং SpVendorListName; // Name of the actual MOSS list containing vendors.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
ব্যবহার (SPSite site = নতুন SPSite(SpVendorSiteName))
{
ব্যবহার (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpVendorListName];
foreach (বিদ্বেষ vendorItem মধ্যে currentList.Items)
{
যদি (vendorItem["Vendor Name"] == শূন্য) অগ্রসর;
যদি (vendorItem["Vendor Name"].ToString().সমান(vendorName))
প্রত্যাবর্তন নতুন Vendor(vendorItem);
}
Vendor v = নতুন Vendor();
v.VendorPhone = "not found: " + vendorName;
প্রত্যাবর্তন v;
প্রত্যাবর্তন শূন্য;
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
} // পদ্ধতি
[WebMethod]
জনসাধারণের Vendor[] GetVendorsOfType (স্ট্রিং filterType)
{
স্ট্রিং SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
স্ট্রিং SpVendorListName; // Name of the actual MOSS list containing vendors.
SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();
Vendor[] resultList;
int-এ vendorIndex = 0;
resultList = নতুন Vendor[1000];
// Initialize the list with a default friendly message.
Vendor v = নতুন Vendor();
v.VendorName = "Select a vendor type to populate this list.";
resultList[0] = v;
// Convert the filter to lower case for easier string comparison later.
filterType = filterType.ToLower();
// If the filter type passed is "test", generate some simple data.
#অঞ্চল Filter type = "test"
যদি (filterType.Equals("test"))
প্রত্যাবর্তন GenerateTestVendors();
#endregion
যদি (সত্য)
{
ব্যবহার (SPSite site = নতুন SPSite(SpVendorSiteName))
{
ব্যবহার (SPWeb web = site.OpenWeb())
{
v = শূন্য;
SPList currentList = web.Lists[SpVendorListName];
// Iterate through all the items in the vendor list.
foreach (বিদ্বেষ vendorItem মধ্যে currentList.Items)
{
স্ট্রিং lowerVendorType;
lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);
যদি (lowerVendorType.Equals(filterType))
{
resultList[vendorIndex ] = নতুন Vendor(vendorItem);
}
} // iterating thru all the vendors in the list
প্রত্যাবর্তন TrimVendorArray(vendorIndex, resultList);
// return resultList;
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
} // if true
প্রত্যাবর্তন শূন্য;
}
ব্যক্তিগত Vendor[] TrimVendorArray(int-এ newsize, Vendor[] originalVendorArray)
{
Vendor[] trimmedArray;
যদি (newsize == 0) newsize = 1;
trimmedArray = নতুন Vendor[newsize];
int-এ currentCounter = 0;
জন্য (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}
প্রত্যাবর্তন trimmedArray;
}
}