อยากเก็บข้อมูลใน ComboBox มากกว่า 1 ค่า?

บางครั้งเราก็อยากจะเก็บข้อมูลใน ComboBox (ขอย่อว่า CB) มากกว่าหนึ่งค่า ซึ่งกรณีแบบนี้สามารถพบได้บ่อยในระบบงานฐานข้อมูล
การงานมักจะอิงกับ Primary Key ที่เป็นตัวเลข แต่ใน CB เรามักจะแสดงเป็นข้อความ

วันนี้ผมมีทางออกง่ายๆมาฝากกันครับ

ก่อนอื่นเลย ข้อควรรู้เกี่ยวกับ Item ใน CB คือมันรับเป็บ object ย้ำชัดๆนะครับว่า object
นั้นแปลว่าเราสามารถโยนอะไรก็ได้ลงไปใน CB ซึ่งเวลาระบบนำมาแสดงผล มันจะใช้งาน Method toString() นั้นเอง
ดังนั้นเราก็แค่สร้าง Class อะไรซักอย่างที่มี properties 2 ค่าคือค่าที่แสดงกับค่าที่เอาไว้ดึงเข้าฐานข้อมูล
โดยที่ทำการ override method toString ให้คือค่าเป็น string ที่ต้องการแสดง

เพื่อไม่เป็นการเสียเวลามาดู Class ตัวอย่างกันเลยครับ

public class ComboBoxItem
{
   string displayValue;
   string hiddenValue;
 
   //Constructor
   public ComboBoxItem (string d, string h)
   {
        displayValue = d;
        hiddenValue = h;
   }
 
   //Accessor
   public string HiddenValue
   {
        get
        {
             return hiddenValue;
        }
   }
 
   //Override ToString method
   public override string ToString()
   {
        return displayValue;
   }
}

เวลาใช้งานก็ง่ายมาก

//ตอนเพิ่มข้อมูล:
comboBox1.Items.Add(new ComboBoxItem("This is show", "This is hidden data"));
 
//ตอนดึงขัอมูลมาใช้:
string hValue = ((ComboBoxItem)comboBox1.SelectedItem).HiddenValue;

ง่ายไหมครับ ^^

Credit: Stack Overflow

Facebooktwittermailby feather
ข้อความนี้ถูกเขียนใน .NET, Programming คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น