สมมติเราสร้าง Field ไว้เก็บข้อมูลใน List item โดยที่ Field นี้ไม่ได้บังคับว่าให้กรอกข้อมูล เหตุการณ์เหมือนจะเป็นไปด้วยดี ผู้ใช้งานกรอกข้อมูลใส่ List item ไว้เรียบร้อยโดยไม่ได้กรอกค่าใน Field นี้
แต่แล้ว เราจำเป็นต้องเพิ่มค่าให้กับ Field นี้โดยผ่าน Code ปัญหาเกิดทันทีครับ
SPFieldUserValueCollection a = item[b] as SPFieldUserValueCollection;
สมมติว่าผู้ใช้งาน ไม่ได้ทำการเลือกรายชื่อผู้ใช้ใน Field ที่กำหนดให้นี้ ผลลัพธ์ที่ได้ของตัวแปร a นั้นคือ null
ครับ
เข้าใจว่านี่คงเป็นเพราะกระบวนการการเก็บข้อมูลในฐานข้อมูล ซึ่งหากไม่ได้มีการบันทึกข้อมูล ตัว SharePoint จะตีให้ค่าของ Field นั้นเป็น String.Empty
ซึ่งจากที่เห็นทำให้ as operator ให้ผลลัพธ์ null
ออกมา ทางแก้ที่พอจะนึกออกคือ ก็ต้องสร้างค่านั้นเอง แล้วทำการให้ค่ากลับไปเพื่อบันทึกข้อมูลใส่ List item ดังเช่น
SPFieldUserValueCollection a = item[b] as SPFieldUserValueCollection;
if (a == null)
a = new SPFieldUserValueCollection();
// Do something ...
// Assign value back to list item
item[b] = a;
item.Update();
อาจจะเป็นจุดที่หลาย ๆ คนพลาดนะ ก็จำเอาไว้
Tags