กำหนดลำดับฟิลด์บน DataForm (Order of the fields on the DataForm)


 

สำหรับการสร้างโปรแกรมประยุกต์ทางธุรกิจ (LOB)  คุณลักษณะทั่วไปที่เราต้องเจอคือการ เพิ่ม(Create), อ่าน(Review หรือ read) ,แก้ไข(Update), ลบ(Delete) ข้อมูล (CRUD) และ คุณลักษณะ หรือฟีเจอร์ดังกล่าว เราสามารถเรียกใช้งานได้อย่างง่ายผ่านคอนโทรล DataForm Silverlight

โดยคอนโทรล DataForm จะสร้างป้ายชื่อ(Label) และช่องใส่ข้อมูล(TextBox) ให้อัตโนมัติตามชื่อฟิลด์ในตาราง แต่เราก็ประสบปัญหาว่า มันไม่เรียงลำดับฟิลด์ต่างๆ ให้ง่ายต่อการเข้าใจ ของผู้ใช้งาน ว่าควรป้อนข้อมูลอะไรเป็นลำดับ ก่อน-หลัง และฟิลด์ใหนที่เราไม่ต้องการห้มันแสดง…

 

บทความนี้เราไปสั่งให้มันเรียงลำดับฟิลด์ ที่สร้างบน DataForm ตามความต้องการของเรา และสั่งไม่ให้แสดงฟิลด์ที่เราไม่ต้องการ กันครับ ตัวอย่างดังรูป

0

 

1. ก่อนอื่นให้สร้างโปรเจ็กต์ Silverlight กันก่อน

1

 

2. เพิ่มแหล่งเข้าถึงข้อมูล (DAL) ด้วย ADO.NET Entity Data Model

2

 

3. สร้าง Connection ชี้ไปยังฐานข้อมูล ในที่นี้ใช้ตัวอย่างฐานข้อมูล Northwind จากนั้นเลือกเฉพาะตาราง Products

3 4

 

4. ได้อ็อบเจ็กต์โมเดลของ Products เรียบร้อย ทำการ Build 1 ครั้ง

5

 

5. ทำการสร้าง(BL) โดยใช้ Domain Service Class

6

 

6.  เลือก Entity Product ให้ติ๊ก Enable editing และ Generate associated classes for metadata  เราจะสั่งให้ DataForm เรียงลำดับฟิลด์ผ่าน metadata นี้ ฉะนั้นห้ามลืมเลือก

7

 

7. Rebuild Solution 1 ครั้งเพื่อให้ RIA Service ทำการ Map DomainContext ไปยังฝั่งไคลเอ็นต์

8. ทำการลากคอนโทรล DataForm ไปวางบนเพจ Silverlight ใน MainPage

9.ทำการผูกข้อมูลเข้ากับ DataSource ให้เรียบร้อย

10. ทำการลากปุ่ม Button มาหนึ่งปุ่มเพื่อทำเป็นปุ่มบันทึกข้อมูล ระบุป้ายชื่อว่า Submit

9

 

11. ลองรันแอปพลิเคชัน

12. เราจะเห็นว่าฟิลด์ต่างเรียงไม่เป็นที่ต้องการ

10

 

13. ทำการเปิดไฟล์ NothwindDomainService.metadata.cs บนโปรเจ็กต์ฝั่งเซอร์ฟเวอร์ แล้วทำการเพิ่มแอททริบิวลงไป ดังนี้

….

….

internal sealed class ProductMetadata
       {

           // Metadata classes are not meant to be instantiated.
           private ProductMetadata()
           {
           }

           [Display(AutoGenerateField = false)]
           public Nullable<int> CategoryID;

           [Display(AutoGenerateField = false)]
           public bool Discontinued;

          [Display(Name = "Product ID", Description = "Select the ProductID of Products", Order = 1)]
           public int ProductID;

          [Display(Name = "Product Name", Description = "Select the Name of Products", Order = 2)]
           public string ProductName;

           [Display(Name = "QuantityPerUnit", Description = "Select the Quantity of Products", Order = 3)]
           public string QuantityPerUnit;

          [Display(AutoGenerateField = false)]
           public Nullable<short> ReorderLevel;

          [Display(AutoGenerateField = false)]
           public Nullable<int> SupplierID;

           [Display(Name = "UnitPrice", Description = "Select the Price of Products", Order = 4)]
           public Nullable<decimal> UnitPrice;

           [Display(Name = "UnitsInStock", Description = "Select the Units In Stock of Products", Order = 5)]
           public Nullable<short> UnitsInStock;

          [Display(AutoGenerateField = false)]
           public Nullable<short> UnitsOnOrder;
       }

 

14. ลองรันแอปฯ ใหม่อีกครั้ง คราวนี้จะเห็นว่า DataForm เรียงฟิลด์ต่างๆได้สวยงาม และง่ายต่อการใช้งานมากขึ้น ฟิลด์ที่ไม่ต้องการให้แสดง ก็หายไป

11

15. แอตทริบิวต์

  • AutoGenerateField: ถ้ากำหนดเป็น false,จะซ่อนฟิลด์ดังกล่าวไม่ให้ปรากฏบน DataForm
  • Description: แสดงข้อความที่จะปรากฏเป็นคำแนะนำ (ToolTip)
  • Name: เป็นชื่อที่จะถูกแสดงเป็นป้ายชื่อแทนชื่อฟิลด์ที่ยากต่อการเข้าใจ
  • Order: จุดนี้สำคัญ มันเป็นการกำหนดลำดับของฟิลด์ที่ถูกวาดลงบน DataForm

 

แหล่งข้อมูลดาวน์โหลด

 

ผู้เขียน:
nano_mvp_2009_1

Advertisements
เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เขียนใน RIA Services

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive
%d bloggers like this: