2012-03-16 26 views
6

Tôi có một kiểm soát XtraGrid trên một hình thức cửa sổ, bị ràng buộc vào một đối tượng thiết lập như sau:XtraGrid không làm mới sau khi cập nhật nguồn dữ liệu của nó

clientListBindingSource.DataSource = ObjectContext.Clients; 

đâu ObjectContext là một bối cảnh EF bình thường. Để chỉnh sửa một khách hàng, tôi vượt qua đối tượng hàng đã chọn của Client mẫu chỉnh sửa của tôi, và được lưu lại thay đổi như sau:

var rows = mainView.GetSelectedRows(); 
var editClient = ((Client)mainView.GetRow(rows[0])); 
var editForm = new ClientDetailForm 
        { 
         EditClient = editClient 
        }; 
var result = editForm.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    ObjectContext.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); 
    clientGrid.RefreshDataSource(); 
} 

thay đổi tôi thực hiện theo hình thức chỉnh sửa kéo dài đến DB, nhưng tôi đã thử nhiều cách cố gắng để có được lưới điện để cập nhật, và nó ngoan cố từ chối cho đến khi tôi khởi động lại ứng dụng. Tôi đang làm gì sai?

Trả lời

6

Cố gắng thiết lập lại nguồn dữ liệu của bạn sau khi thực hiện những thay đổi như thế này:

yourGrid.DataSource = null; // you might not need this, but it's my practice 
yourGrid.DataSource = data_source; 
+3

đó làm việc, cảm ơn, nhưng đó là một chút não chết với tôi rằng không có gì khác, bao gồm cả ' Phương thức RefreshDataSource', hoạt động. Các điều khiển DevExpress dường như tụt hậu so với các nguồn dữ liệu ED. – ProfK

+0

Theo tôi, một GridView không làm gì khác ngoài việc hiển thị dữ liệu. Một lập trình viên nên nói với nó rằng nguồn dữ liệu đã thay đổi, để nó có thể hiển thị lại dữ liệu. Tôi không biết liệu DevExpress có tính năng này hay không, hoặc chúng ta nên làm điều đó theo cách thủ công. – jaselg

2

tôi thấy rằng một cuộc gọi đến

Grid.RefreshDataSource(); 

công trình như mong đợi nếu bạn đang ràng buộc DataSource qua mã như sau:

IndicationSummaryGrid.DataBindings.Add("DataSource", Presenter, "SummaryDetailList", true, DataSourceUpdateMode.OnPropertyChanged); 

Trường hợp "DataSource" là thuộc tính lưới bị ràng buộc, Trình bày là đối tượng là b ound và SummaryDetailList là danh sách các đối tượng thuộc về Presenter.

+0

Trong một trong các dự án của chúng tôi, công việc này không hoạt động (nó là một mạng lưới với các cột con. AddRemove thường hoạt động ngoại trừ - người dùng nhấp vào thứ gì đó để sắp xếp - sau đó GridView không cập nhật thêm ...) – Offler

0

tôi đề nghị bạn thử này

clientListBindingSource.ResetBindings(False); 

Đó là nghĩa vụ phải làm mới nguồn ràng buộc do đó làm mới lưới

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