มอส: ปรับปรุงรายการที่กำหนดเอง

มีหลายตัวอย่างของการปรับปรุงรายการที่กำหนดเองผ่าน SDK. นี่คือยังอื่น.

ปัญหาธุรกิจ: ฟอร์ม InfoPath ได้รับการออกแบบที่ช่วยให้ผู้ใช้ป้อนออนไลน์ใบขอซื้อ. ใบ PO เลขควรลำดับดั้งเดิมตามค่าจำนวนเต็ม และคำนวณโดยอัตโนมัติ.

แก้ไขปัญหาธุรกิจ: สร้าง MOSS รายการแบบกำหนดเองที่ประกอบด้วยสองคอลัมน์: "ControlField" และ "ControlValue". ค่าคอลัมน์ประกอบด้วยหมายเลขใบขอซื้อต่อไป. หมายเหตุว่า ทั่วไปที่ "ควบคุม" ชื่อที่แสดงสำหรับเขตข้อมูลตัวควบคุมในอนาคตที่อาจจะใช้ได้ตามความจำเป็น.

ด้านเทคนิค: สร้างบริการเว็บที่เข้าถึงได้ โดยไคลเอ็นต์ InfoPath. บริการเว็บการส่งกลับค่าหมายเลขใบขอซื้อถัดไปกลับ และปรับปรุงค่าของรายการ.

บทเรียนที่เรียนรู้:

  • เมื่อมีการเพิ่มบริการเว็บนี้เป็นแหล่งข้อมูลให้กับฟอร์ม InfoPath, ผมพบว่ามันจำเป็นต้องแปลงเป็น udc และเก็บลงในไลบรารีการเชื่อมต่อข้อมูล.
  • ยังพบว่าจำเป็นต้องเปิดใช้งานสคริปต์ข้ามโดเมนผ่านการจัดการบริการศูนย์กลาง // จัดการโปรแกรมประยุกต์ // ตั้งค่าคอนฟิกเซิร์ฟเวอร์ของฟอร์ม.
  • ครั้งแรกแบบพยายามที่จะเข้าถึงบริการเว็บ, ในขณะที่ใช้ และในบางโอกาส, มันจะหมดเวลา. ผมเล่นการตั้งค่าในแบบฟอร์มการกำหนดค่าเซิร์ฟเวอร์เพื่อขยายการตั้งค่าการหมดเวลา และที่ดูเหมือนจะช่วย.

รหัส:

โดยใช้ ระบบ;
โดยใช้ 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 บรรทัดต่อไปนี้ถ้าใช้ออกแบบส่วนประกอบ
//InitializeComponent();
}

/// <สรุป>
/// ได้รับใบ PO po เลขควบคุมรายการ sharepoint.
/// เพิ่มหมายเลข PO ในรายการ.
/// </สรุป>
/// <ส่งกลับค่า></ส่งกลับค่า>
[WebMethod]
สาธารณะ สายอักขระ GetNextPoNumber()
{
สายอักขระ SpPoControlSiteName; // ชื่อของมอไซต์จริงที่เป็นโฮสต์ให้กับรายการควบคุม PO.
สายอักขระ 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();
}

} // ค้นหา, การอ่าน และการปรับปรุงหมายเลข PO ในรายการ.


} // ใช้เว็บ spweb = site.openweb()
} // ใช้ spsite ไซต์ = spsite ใหม่("http://localhost/mizuho")

เที่ยวกลับ nextPoReqNumber;

}
}

One thought on“มอส: ปรับปรุงรายการที่กำหนดเอง

  1. KSP เขียน:
    Hi Paul,
    เรามีสถานการณ์ที่คล้ายสิ่งที่คุณจะกล่าวถึง แต่ปัญหาคือ ต้องใช้ servie นี้เว็บบนเซิร์ฟเวอร์โหลดดุลดังนั้น,วิธีการจัดการการร้องขอเกิดในกรณีนี้หรือว่าต้องขอใหม่ รอและร้องขอเดียวควรปรับปรุงหมายเลขรายการจนถึง แล้วควรร้องขออื่นทั้งหมดใน que.กรุณาแจ้งให้เราทราบว่าเพื่อให้บรรลุนี้.
    ขอบคุณล่วงหน้า.

ปล่อยให้ตอบกลับ KSP เขียน: ยกเลิกการตอบ

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่. ช่องที่ต้องการถูกทำเครื่องหมาย *