Thử sử dụng BindingList <> thay vì Danh sách <> và (như đã được đề xuất bởi Daniel), triển khai INotifyPropertyChanged. Tuy nhiên, tôi nghĩ bạn cũng có thể gọi .Refesh() nếu bạn không muốn triển khai giao diện INotifyPropertyChanged.
Dưới đây là một ví dụ tách từ here
public class Car : INotifyPropertyChanged
{
private string _make;
private string _model;
private int _year;
public event PropertyChangedEventHandler PropertyChanged;
public Car(string make, string model, int year)
{
_make = make;
_model = model;
_year = year;
}
public string Make
{
get { return _make; }
set
{
_make = value;
this.NotifyPropertyChanged("Make");
}
}
public string Model
{
get { return _model; }
set
{
_model = value;
this.NotifyPropertyChanged("Model");
}
}
public int Year
{
get { return _year; }
set
{
_year = value;
this.NotifyPropertyChanged("Year");
}
}
private void NotifyPropertyChanged(string name)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
_dgCars.AutoGenerateColumns = false;
DataGridViewTextBoxColumn makeColumn = new DataGridViewTextBoxColumn();
makeColumn.DataPropertyName = "Make";
makeColumn.HeaderText = "The Car's Make";
DataGridViewTextBoxColumn modelColumn = new DataGridViewTextBoxColumn();
modelColumn.DataPropertyName = "Model";
modelColumn.HeaderText = "The Car's Model";
DataGridViewTextBoxColumn yearColumn = new DataGridViewTextBoxColumn();
yearColumn.DataPropertyName = "Year";
yearColumn.HeaderText = "The Car's Year";
_dgCars.Columns.Add(makeColumn);
_dgCars.Columns.Add(modelColumn);
_dgCars.Columns.Add(yearColumn);
BindingList<Car> cars = new BindingList<Car>();
cars.Add(new Car("Ford", "Mustang", 1967));
cars.Add(new Car("Shelby AC", "Cobra", 1965));
cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965));
_dgCars.DataSource = cars;
Nguồn
2012-03-18 13:40:01
Trong khi điều này có thể hoạt động, nó sẽ phải vẽ lại toàn bộ lưới điện, gây tổn thương thực hiện nếu bạn có rất nhiều hàng/cột. –
Không phải là mục tiêu để repopulate lưới điện bởi vì tập hợp kết quả đã thay đổi? – Kevin
Điều này có thể đạt được khi DataGridView được liên kết với DataPropertyName của một lớp không? nếu vậy làm thế nào nó có thể đạt được? –