2009-07-21 33 views
9

Làm cách nào để có được một DataGrid WPF để lưu các thay đổi về cơ sở dữ liệu?Làm cách nào để Lấy Dữ liệu WPF để Lưu Thay đổi Quay lại DataBase?

Tôi đã liên kết dữ liệu với DataGrid kiểm soát đối tượng DataTable và điền bảng đó bằng truy vấn SELECT rất đơn giản để truy xuất một số thông tin cơ bản. Dữ liệu chỉ hiển thị tốt trong điều khiển.

Nhưng khi tôi sử dụng điều khiển để chỉnh sửa dữ liệu, các thay đổi sẽ không được đẩy trở lại DB.

Có ai biết tôi đang thiếu gì không?

Trả lời

16

cập nhật Performing

Khi người dùng chỉnh sửa các khách hàng dữ liệu trong DataGrid, các ràng buộc DataTable trong bộ nhớ được cập nhật cho phù hợp. Tuy nhiên, các bản cập nhật này không được tự động ghi lại vào cơ sở dữ liệu. Việc nhà phát triển quyết định khi nào các thay đổi đối với DataTable được ghi lại vào cơ sở dữ liệu tùy thuộc vào yêu cầu của ứng dụng. Ví dụ: trong một số trường hợp, bạn có thể gửi một loạt thay đổi thông qua nút "Gửi" hoặc bạn có thể muốn cập nhật cơ sở dữ liệu khi người dùng cam kết mỗi chỉnh sửa hàng. Để hỗ trợ chúng, các hàng mà DataTable chứa có một thuộc tính RowState cho biết chúng có chứa các thay đổi cần được đồng bộ hóa với cơ sở dữ liệu hay không. Quá trình đồng bộ hóa có thể dễ dàng đạt được thông qua phương thức Cập nhật của TableAdapter. url: WPF DataGrid examples

Ví dụ sau đây cho thấy cách các sự kiện RowChanged và RowDeleted thể được xử lý để thay đổi trong tình trạng DataTable được ghi vào cơ sở dữ liệu mỗi khi người dùng thay đổi liên tiếp:

public CustomerDataProvider() 
{ 
    NorthwindDataSet dataset = new NorthwindDataSet(); 

    adapter = new CustomersTableAdapter(); 
    adapter.Fill(dataset.Customers); 

    dataset.Customers.CustomersRowChanged += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
    dataset.Customers.CustomersRowDeleted += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
} 

void CustomersRowModified(object sender, NorthwindDataSet.CustomersRowChangeEvent e) 
{ 
    adapter.Update(dataset.Customers); 
} 
+0

Đây là rất hữu dụng. Cảm ơn! – Giffyguy

Các vấn đề liên quan