Thursday, May 10, 2012

การสร้างฟอร์ม DataBinding ด้วย c#

เกริ่นนำ 
ช่วงสงกรานต์ก็หยุดกันยาวเลย ว่าจะให้เวลาเขียนบทความกับความรู้ใหม่ๆ ก็เป็นอันว่าไม่มีเวลาทำกัน วันนี้ก็กะจะรวบยอดเรื่องที่ได้ทำในช่วงที่ผ่านมาไว้ในอันเดียวเลยไม่รู้จะมีเวลาพอหรือเปล่าไม่ทราบ มาเข้าเรื่องกันเลย การสร้างฟอร์มบน Windows Application นั้น ส่วนมากจะใช้ตัว bindingSouce เข้ามาร่วมใช้งาน นอกจากนี้อีกตัวที่ใช้คู่กันก็คือ bindingNavigator เรามาเริ่มทำงานกับฟอร์มโดยการสร้างฟอร์มกันขึ้นมาเลยตามตัวอย่างด้านล่าง
การ Design และ Coding.. 
๑. รูปแสดงหน้าจอการออกแบบฟอร์ม
เนื้อหาสำคัญไม่ได้อยู่ที่เทคนิคการออกแบบนะครับ ขอเน้นเทคนิดทางด้านโปรแกรมมิ่ง หลังจากเราได้ทำการออกแบบฟอร์มเรียบร้อยแล้วก็จะมาถึงจุดสำคัญคือ การกำหนด DataBinding ให้กับ TextBox ผมได้ทำเป็นเมธอร์ดไว้ดังนี้
private void SetupPropertieText()
{
//Info
textEdit2.DataBindings.Add("Text", bindingCompanyData, "Street");
textEdit3.DataBindings.Add("Text", bindingCompanyData, "Place");
textEdit4.DataBindings.Add("Text", bindingCompanyData, "Country");
textEdit6.DataBindings.Add("Text", bindingCompanyData, "Phone");
textEdit18.DataBindings.Add("Text", bindingCompanyData, "Email");
textEdit1.DataBindings.Add("Text", bindingCompanyData, "HouseNumber");
textEdit5.DataBindings.Add("Text", bindingCompanyData, "ZipCode");
textEdit7.DataBindings.Add("Text", bindingCompanyData, "Company_Code");
textEdit8.DataBindings.Add("Text", bindingCompanyData, "Fax");
textEdit21.DataBindings.Add("Text", bindingCompanyData, "WorkArea");
//Contact
textEdit14.DataBindings.Add("Text", bindingCompanyData, "Contact_Name");
textEdit13.DataBindings.Add("Text", bindingCompanyData, "Contact_Email");
textEdit16.DataBindings.Add("Text", bindingCompanyData, "Contact_Phone");
textEdit15.DataBindings.Add("Text", bindingCompanyData, "Contact_Fax");
//Billing
textEdit20.DataBindings.Add("Text", bindingCompanyData, "BillingStreet");
textEdit12.DataBindings.Add("Text", bindingCompanyData, "BillingHouseNumber");
textEdit19.DataBindings.Add("Text", bindingCompanyData, "BillingPlace");
textEdit11.DataBindings.Add("Text", bindingCompanyData, "BillingZipCode");
textEdit10.DataBindings.Add("Text", bindingCompanyData, "BillingCountry");
textEdit17.DataBindings.Add("Text", bindingCompanyData, "DebitNumber");
textEdit9.DataBindings.Add("Text", bindingCompanyData, "CreditNumber");
}
จากโค้ดได้แสดงถึงการเชื่อม TextBox ให้ bindingSource รู้จักรวมทั้งเชื่อมการทำงานร่วมกับ bindingNavigator ในคราวเดียวกันด้วย
การใช้งานร่วมกับ ชนิดข้อมูลอื่นๆ
จากตัวอย่างด้านบนเราได้ทำชนิดข้อมูลที่เป็น Text ตามโค้ด
textEdit2.DataBindings.Add("Text", bindingCompanyData, "Street");
เรามาดูชนิดข้อมูลอื่นๆ กันบ้างว่า bindingSource จะรู้จักกันได้อย่างไร
Number Format
Binding fteBinding = new Binding("Text", bindingEmployee, "FTE", true);
fteBinding.FormatString = "0";
fteBinding.NullValue = "0";
textEdit18.DataBindings.Add(fteBinding);
อย่างแรกเราต้องกำหนดรูปแบบ data binding ใหม่ขึ้นมา แต่เราไปกำหนดรูปแบบเป็นชนิดตัวเลข fteBinding.FormatString = “0″; เพื่อให้รูว่าชนิดข้อมูลเป็นตัวเลข และ NullValue = “0″; ตามตัวอย่าง
DateTime Format
// Date Format Style
Binding dstBinding = new Binding("Text", bindingEmployee, "DateStarted", true);
dstBinding.FormatString = "d";
dstBinding.NullValue = "<unknown>";
จะเหมือนกับ Number Format นะครับ
ComboBox Value
comboBox1.DataBindings.Add("SelectedValue",this.bindingEmployee, "Function_ID");
//หรือ
comboBox1.DataBindings.Add("SelectedItem",this.bindingEmployee, "Function_ID");
ส่วนอันสุดท้ายเป็นการประยุกต์ให้ใช้งานกับ ComboBox ซึ่งจะมีความแตกต่างกันเล็กน้อย และมีโค้ดที่เกี่ยวข้องกับการ Load Data to ComboBox ดังนี้
private PlanningModelDataContext db = new PlanningModelDataContext();

var planFunction = from pf in db.Planning_Functions
orderby pf.Function_Name
select pf;
bindingFunction.DataSource = planFunction;
comboBox1.DataSource = bindingFunction;
comboBox1.DisplayMember = "Function_Name";
comboBox1.ValueMember = "Function_ID";
สรุป
มีเวลาเขียนน้อยไปหน่อย ตอนเย็นๆ จะลองเขียนเพิ่มใหม่นะครับ เพราะช่วงที่ผ่านมาทำอะไรไปเยอะมากทีเดียว

ref : http://www.codemarts.com/2010/06/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87%E0%B8%9F%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B8%A1-databinding-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-c/

No comments:

Post a Comment