Silverlight Adding new rows to DataGrid


 

การใช้งาน DataGrid คอนโทรล เราสามารถสร้างแถวใหม่ได้ด้วยการเพิ่มไอเท็มใหม่ให้กับ DataSource ซึ่งขั้นตอนการสร้าง ตามตัวอย่างดังต่อไปนี้

1. คลิกปุ่ม Add เป็นการเพิ่มแถวใหม่ให้คอนโทรล DataGrid
5

 

2. ป้อนข้อมูล แล้วทำการกดปุ่ม Submit เพื่อบันทึกข้อมูลกับเข้าไปที่ Server
6

 

3. เลือก Row และกดปุ่ม Delete เป็นการลบ Row ดังกล่าว เมื่อกด Submit เป็นการลบข้อมูลจริงที่ Server
7

 

ออกแบบโปรแกรม

4. สร้างโปรเจ็กต์ Silverlight และ Enable WCF RIA Services
1

 

5. เลือก Table ที่ต้องการ จากนั้นคลิก Finish แล้ว Build โปรเจ็กต์ ASP.NET 1 ครั้ง
2

 

6. เพิ่ม DomainService แล้วเลือกอ็อบเจ็กต์ดังรูป จากนั้น คลิก OK จากนั้น Build Solution 1 ครั้ง
3

 

7. ออกแบบหน้าจอ โดยลาก DataSource ของ Category ไปวางบนเพจ Silverlight แล้วเพิ่มปุ่ม Button ดังรูป
8

 

8. เลือก DomainDataSource ชื่อ categoriesDomainDataSource => (F4) Properties
9

 

9. ในหน้าต่าง Properties ให้เลือก Event SubmittedChanges ไว้แสดงข้อความว่าบันทึกข้อมูลเรียบร้อยแล้ว ทางหน้าจอ
4

private void categoriesDomainDataSource_SubmittedChanges(object sender, SubmittedChangesEventArgs e)
{

//เราจะเพิ่มโค้ด แสดงผลการบันทึกข้อมูล ณ ที่นี้

}

 

เขียนโค้ดโปรแกรม

//เพิ่มแถวใหม่
private void button1_add_Click(object sender, RoutedEventArgs e)
{
   var cat = categoriesDomainDataSource.DomainContext as DomainService1;
   cat.Categories.Add(new Categories { CategoryID = 0, CategoryName = "New…", Description = "New…" });
   categoriesDataGrid.ItemsSource = cat.Categories;
}

//ลบแถวที่เลือก
private void button1_del_Click(object sender, RoutedEventArgs e)
{
    if (MessageBox.Show("คุณต้องการลบข้อมูลใช่หรือไม่?…", "คำยืนยัน", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
    {
        var cat = categoriesDomainDataSource.DomainContext as DomainService1;
        cat.Categories.Remove(categoriesDataGrid.SelectedItem as Categories);
        categoriesDataGrid.ItemsSource = cat.Categories;
    }
}

//บันทึกข้อมูลเข้าฐานข้อมูลบน Server
private void button1_Submit_Click(object sender, RoutedEventArgs e)
{
    categoriesDomainDataSource.SubmitChanges();
}

//ยกเลิกข้อมูล
private void button1_cancel_Click(object sender, RoutedEventArgs e)
{
    categoriesDomainDataSource.RejectChanges();
}

//บันทึกข้อมูลเรียบร้อย
private void categoriesDomainDataSource_SubmittedChanges(object sender, SubmittedChangesEventArgs e)
{
    if (e.HasError)
    {
        System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK);
        e.MarkErrorAsHandled();
    }
    else
        System.Windows.MessageBox.Show("บันทึกข้อมูลเรียบร้อย…", "SubmittedChanges", System.Windows.MessageBoxButton.OK);

}

 

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

 
http://cid-7d608959d854cb28.office.live.com/self.aspx/SourcesCode/2010-09-01^_SilverlightApplication^_NewDataGridRow.zip

ผู้เขียน:
nano_nec53

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

เขียนใน Silverlight

ใส่ความเห็น

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: