Silverlight 4 DomainDataSource Filtering data


การกรองข้อมูลช่วยให้คุณสามารถดึงข้อมูลออกจากฐานข้อมูล ไปแสดงบนหน้าจอ โปรแกรมได้ตามความต้องการ ซึ่งบน RIA Service มีคุณสมบัติ FilterDescriptors และ คุณสมบัติ QueryParameters ของคนโทรล DomainDataSource ให้ใช้งาน ซึ่งสามารถกำหนดรูปแบบของการกรอง ได้ดังนี้

  • Contains
  • EndsWith
  • IsContainedIn
  • IsEqualTo
  • IsGreaterThan
  • IsGreaterThanOrEqualTo
  • IsLessThan
  • IsLessThanOrEqualTo
  • IsNotEqualTo
  • StartsWith

ตัวอย่างการกรองข้อมูล:

Silverlight4DomainDataSourceFiltering

 

ในบทความนี้เป็นการแสดงวิธีการกรองข้อมูลผ่าน คุณสมบัติ FilterDescriptors  และคุณสมบัติ QueryParameters ซึ่งคุณสมบัติ QueryParameters นั้นได้จากการสร้างให้อัตโนมัติของคลาส DomainDataSource  ตอนเราปรับแต่คลาส โดเพิ่มเมธอด Query ที่มีการผ่านพารามิเตอร์เข้าไป เราไปดูขั้นตอนการพัฒนาแอพพลิเคชั่นกันครับ

ขั้นตอนการพัฒนาแอพพลิเคชั่น

  • ขั้นตอนที่ หนึ่ง สร้างโปรเจ็ก Silverlight
  • ขั้นตอนที่ สอง ติดต่อฐานข้อมูลด้วย EF
  • ขั้นตอนที่ สาม สร้าง DomainService
  • ขั้นตอนที่ สี่ ปรับแต่งคลาส DomainService
  • ขั้นตอนที่ ห้า ออกแบบหน้าจอโปรแกรม(การกรอง)
  • ขั้นตอนที่ หก ทดสอบ

 

ขั้นตอนที่ หนึ่ง สร้างโปรเจ็ก Silverlight

สร้างโปรเจ็กต์ด้วย Silverlight, เลือก Enable WCF RIA Service ด้วย

12

 

ขั้นตอนที่ สอง ติดต่อฐานข้อมูลด้วย EF

เพิ่มไอเทม EF, Next

34

Next, Finish

56

 

เราจะได้โทเดลของฐานข้องมูล, จากนั้น Build โปรเจ็กต์ ASP.NET หนึ่งครั้ง

87

 

ขั้นตอนที่ สาม สร้าง DomainService

เพิ่มไอเทม DomainService, เลือกทั้งหมด แล้วกด OK

910

คุณจะได้คลาสของ DomainService1.cs และคลาส Meta data

11

 

ขั้นตอนที่ สี่ ปรับแต่งคลาส DomainService

เพิ่มเมธอด Query: จะเห็นว่าคุณผ่านพารามิเตอร์ CateName RIA Service จะนำพารามิเตอร์ดังกล่าวไปสร้างคอนโทรลให้ บน DomainDatasource ให้อัตโนมัติ 

12

public IQueryable<Category> GetCategories_byName(string CateName)
{
    return this.ObjectContext.Categories.Where(t => t.CategoryName.Contains(CateName));
}

 

ขั้นตอนที่ ห้า ออกแบบหน้าจอโปรแกรม(การกรอง)

Build โซลูชั่นอีกหนึ่งครั้ง, และตรวจสอบที่ Datasource Category จะเห็นว่ามีเมธอดที่เราเพิ่มใหม่เข้าไปด้วย ให้เลือกเมธอดดังกล่าว

1315

Datasource Product จะเห็นว่ามีเฉพาะเมธอด Default, เปิดไฟล์ Home.xaml แล้วแบ่งหน้าจอดังรูป จากนั้นลาก Datasource Category มาวาง

1617

เมื่อลาก Datasource Category มาวาง จะเห็นว่ามีคอนโทรนเงื่อนไขการกรองให้พร้อม จากนั้นจัดหน้าจอให้เข้าที่

18

ถ้าดูเบื้องหลัง(.xaml) จะเห็นว่า DomainService สร้างคอนโทรล QueryParameters ให้อัตโนมัติ

18_1

เราสมารถปรับแต่งคุณสมบัติ QueryParameters ของ DomainDatasource ผ่านหน้าจอ UI ได้

image

 

จากนั้นลาก DomainDatasource Product เข้ามาวาง แล้วทำการเพิ่มคอนโทรล(1,2,3,4,5) เพื่อจะทำการกรองข้อมูลผ่านคุณสมบัติ คุณสมบัติ FilterDescriptors

19

เมื่อคลิกลงบนปุ่ม Find… ใส่โค้ดเพื่อกรองข้อมูลตามชื่อสินค้า และราคาสินค้ามากว่าหรือเท่ากับราคาที่ระบุ ดังนี้:

private void btFind_Click(object sender, RoutedEventArgs e)
{
    productDomainDataSource.FilterDescriptors.Clear();

    productDomainDataSource.FilterDescriptors.Add(new FilterDescriptor(“ProductName“, FilterOperator.Contains, txtProductName.Text.Trim()));

    if (txtUnitPrice.Text != string.Empty)
        productDomainDataSource.FilterDescriptors.Add(new FilterDescriptor(“UnitPrice“, FilterOperator.IsGreaterThanOrEqualTo, Convert.ToDecimal(txtUnitPrice.Text)));
}

 

 

ขั้นตอนที่ หก ทดสอบ

จากนั้น Build โซลูชั่นหนึ่งครั้ง แล้วกด F5

Silverlight4DomainDataSourceFiltering[4]

 

โดย: Mr.Nano

Software Development Section Manager
Microsoft MVP | Community Leader | WindowsITPro Columnist
https://janawat.wordpress.com | E-Mail: nuchitrwi@hotmail.com |
http://www.flowco.co.th | Phone: 08-5911-7659

เกี่ยวกับ

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: