2
我有一個前端應用程序,而不是立即刪除對象,我們在每個對象上都有一個標誌,表明它是否應該被刪除,所以它可以是以後處理。所以問題是當我在WinForms中使用DataGrid的前端對象時。當我設置Deleted標誌時,我希望該對象不會顯示在DataGrid中,並且將BindingList作爲DataGrid的DataSource。每當DataGrid重新繪製時,是否有辦法強制過濾器?這是DataGrid的功能嗎?或者BindingList的功能>?對於那些更可視化的人來說,這是一個代碼示例。 (警告這是出於概念目的的代碼示例)在WinForms中用BindingList <>處理已刪除的標誌
test.cs中
public class Person : INotifyProperyChanged
{
public string Name { get; set; }
public int Id { get; set; }
private bool _isForDelete;
public bool IsForDelete
{
get { return _isForDelete; }
set
{
_isForDelete = value;
OnPropertyChanged("IsForDelete")
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
MyForm.cs
private BindingList<Person> _persons;
private void MyForm_Load(object sender, EventArgs e)
{
_persons = GetPersonsFromServer();
//Obviously this doesn't work, but I can dream. This is the basic idea.
_myDataGrid.DataSource = _persons.Where(x=>!x.IsForDelete);
}
private void DeleteBtn_Click(object sender, EventArgs e)
{
foreach(var row in _myDataGrid.SelectedRows)
{
var person = (Person)row.DataBoundItem;
person.IsForDelete = true;
}
}
任何建議?