我有两个POCO EF课程:
public class Message
{
public Guid Id { get; set; }
public String Text { get; set; }
public bool IsPrivate { get; set; }
public virtual User User { get; set; }
}
public class User
{
public Guid Id { get; set; }
public String Name { get; set; }
public int Age { get; set; }
}
Accoridng to Entity Framework Databinding with WinForms MSDN tutrotial我通过BindingList将DataGridView绑定到Messages上,如下所示:
private void Form1_Load(object sender, EventArgs e)
{
MyDbContext db = new MyDbContext();
db.Messages.Load();
this.messagesBindingSource.DataSource = db.Messages.Local.ToBindingList();
}
在我的表单上,我有一个用于按用户名过滤的ComboBox和一个用于按消息文本进行文件传输的TextBox:
要按消息文本过滤,请使用以下代码(来自this SO answer):
private void textBox1_TextChanged(object sender, EventArgs e)
{
//messageDataGridView.dataSource -> messagesBindingSource
(messageDataGridView.dataSource as BindingSource).Filter = "Text LIKE '%" + textBox1.Text.Trim() + "%'";
}
但该代码无效 - 我总是看到所有消息。
我不知道如何按用户名过滤(因为它是User实体的属性,我的DataGridView中没有这个属性)。