بسیاری از نمونه های خوبی از به روز رسانی لیست سفارشی از طریق SDK وجود دارد. در اینجا است که هنوز یکی دیگر از.
مشکل کسب و کار: فرم InfoPath و طراحی شده است که کاربران را قادر می سازد تا وارد نیازهای خرید آنلاین. شماره PO مصادره باید سنتی ترتیب بر اساس مقادیر صحیح محاسبه و به صورت خودکار.
راه حل کسب و کار: ایجاد یک لیست خزه های سفارشی شامل دو ستون: "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 = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
رشته nextPoReqNumber = "xyzzy";
با استفاده از (SPSite site = جدید SPSite(SpPoControlSiteName))
{
با استفاده از (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
حلقه foreach (SPItem controlItem به currentList.Items)
{
اگر (((رشته)controlItem["ControlField"]).برابر("NextPoNumber"))
{
nextPoReqNumber = (رشته)controlItem["ControlValue"];
اعضای هیات 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;
}
}