ישנן דוגמאות רבות של עדכון רשימות מותאמות אישית באמצעות ה-SDK. הנה עוד.
הבעיה העסקית: טופס של InfoPath תוכנן מאפשר למשתמשים להזין באינטרנט רכש. פו המספרים צריך להיות רצף מסורתי המבוסס על ערכי המספרים השלמים וראיונות מחושב באופן אוטומטי.
הפתרון העסקי: יצירת רשימה מותאמת אישית מוס המכיל שתי עמודות: "ControlField" ו- "ControlValue". ערך העמודה מכילה את המספר הבא של דרישת רכש. שימו לב כי הכללי "לשלוט" המוסכמה מספק עבור שדות שליטה עתידית שבה ניתן להשתמש לפי הצורך.
פתרון טכני: יצירת שירות אינטרנט לגשת על ידי הלקוח InfoPath. שירות האינטרנט מחזירה בחזרה את המספר הבא של דרישת רכש ומעדכן את הערך של הרשימה.
לקחים:
- בעת הוספת שירות אינטרנט כמקור נתונים של טופס InfoPath, מצאתי את זה צורך להמיר אותו udc ואחסן אותו לתוך בספריית חיבורי נתונים.
- גם מצאתי את זה הכרחי לאפשר scripting בין תחומים באמצעות ניהול שירותים במרכז // ניהול יישומים // תצורת שרת טופס.
- בפעם הראשונה הטופס ניסה לגשת לשירות אינטרנט, זה לוקח זמן, לעיתים, . זה היה פסק זמן. אני לכיסו עם הגדרות תצורת שרת טופס כדי להרחיב את הגדרות זמן קצוב ונראה את זה כדי לעזור.
הקוד:
שימוש מערכת;
שימוש 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 () {
//ההערה השורה הבאה, אם באמצעות רכיבים המיועדים
//InitializeComponent();
}
/// <סיכום>
/// להשיג את מספר הזמנת הרכש הבאה של רשימת בקרת sharepoint מספר פו.
/// להגדיל את מספר הזמנת הרכש ברשימה הזאת.
/// </סיכום>
/// <החזרת></החזרת>
[WebMethod]
הציבור מחרוזת GetNextPoNumber()
{
מחרוזת SpPoControlSiteName; // שם האתר מוס בפועל שמארח את רשימת בקרת פו.
מחרוזת SpPoControlListName; // שם רשימת מוס בפועל המכיל את הפקד פו.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
מחרוזת nextPoReqNumber = "xyzzy";
שימוש (SPSite האתר = חדש SPSite(SpPoControlSiteName))
{
שימוש (SPWeb אינטרנט = האתר. OpenWeb())
{
Splist.update() currentList = אינטרנט. רשימות[SpPoControlListName];
foreach (SPItem controlItem ב currentList.Items)
{
אם (((מחרוזת)controlItem["ControlField"]).שווה ל-("NextPoNumber"))
{
nextPoReqNumber = (מחרוזת)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = המר.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // איתור, קריאה ועדכון את מספר הזמנת הרכש ברשימה.
} // באמצעות האינטרנט spweb = site.openweb()
} // שימוש באתר spsite = spsite חדש(ב- "http://localhost/mizuho")
החזרה nextPoReqNumber;
}
}