C# datagridview绑定源筛选器
我试图从BindingSource中过滤数据,但它不起作用。 我做错了什么? 我将代码简化为一个简单的示例 问题是,如果我在文本框中输入了什么,什么都不会发生C# datagridview绑定源筛选器,c#,datagridview,filter,bindingsource,C#,Datagridview,Filter,Bindingsource,我试图从BindingSource中过滤数据,但它不起作用。 我做错了什么? 我将代码简化为一个简单的示例 问题是,如果我在文本框中输入了什么,什么都不会发生 public partial class Form1 : Form { BindingSource bs = new BindingSource(); public Form1() { InitializeComponent(); List<myObj> myObjLi
public partial class Form1 : Form
{
BindingSource bs = new BindingSource();
public Form1()
{
InitializeComponent();
List<myObj> myObjList= new List<myObj>();
myObjList.Add(new myObj("LastNameA", "Peter"));
myObjList.Add(new myObj("LastNameA", "Klaus"));
myObjList.Add(new myObj("LastNameB", "Peter"));
foreach (myObj obj in myObjList)
{
bs.Add(obj);
}
dataGridView1.DataSource = bs;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs.Filter = string.Format("Name LIKE '%{0}%'", textBox1.Text);
dataGridView1.Refresh();
}
}
public class myObj
{
public myObj(string LastName, String Name)
{
this.LastName = LastName;
this.Name = Name;
}
public string LastName { get; set; }
public string Name { get; set; }
}
公共部分类表单1:表单
{
BindingSource bs=新的BindingSource();
公共表格1()
{
初始化组件();
List myObjList=新列表();
添加(新的myObj(“LastNameA”、“Peter”);
添加(新的myObj(“LastNameA”、“Klaus”);
添加(新的myObj(“LastNameB”、“Peter”);
foreach(myObj列表中的myObj对象)
{
bs.增补(obj);
}
dataGridView1.DataSource=bs;
}
私有void textBox1\u TextChanged(对象发送方,事件参数e)
{
bs.Filter=string.Format(“名称类似“{0}%””,textBox1.Text);
dataGridView1.Refresh();
}
}
公共类myObj
{
公共myObj(字符串LastName,字符串名称)
{
this.LastName=LastName;
this.Name=Name;
}
公共字符串LastName{get;set;}
公共字符串名称{get;set;}
}
上面写着:
仅限实现IBindingListView接口的基础列表
支持过滤
替换这个
List<myObj> myObjList= new List<myObj>();
List myObjList=newlist();
用这个
BindingList<myObj> myObjList= new BindingList<myObj>();
BindingList myObjList=newbindingList();
到目前为止,这对我很有效
public partial class Form1 : Form
{
BindingSource bs = new BindingSource();
BindingList<myObj> myObjList = new BindingList<myObj>();
public Form1()
{
InitializeComponent();
myObjList.Add(new myObj("LastNameA", "Peter"));
myObjList.Add(new myObj("LastNameA", "Klaus"));
myObjList.Add(new myObj("LastNameB", "Peter"));
bs.DataSource = myObjList;
dataGridView1.DataSource = myObjList;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
BindingList<myObj> filtered = new BindingList<myObj>(myObjList.Where(obj => obj.Name.Contains(textBox1.Text)).ToList());
dataGridView1.DataSource = filtered;
dataGridView1.Update();
}
}
public class myObj
{
public myObj(string LastName, String Name)
{
this.LastName = LastName;
this.Name = Name;
}
public string LastName { get; set; }
public string Name { get; set; }
}
公共部分类表单1:表单
{
BindingSource bs=新的BindingSource();
BindingList myObjList=新建BindingList();
公共表格1()
{
初始化组件();
添加(新的myObj(“LastNameA”、“Peter”);
添加(新的myObj(“LastNameA”、“Klaus”);
添加(新的myObj(“LastNameB”、“Peter”);
bs.DataSource=myObjList;
dataGridView1.DataSource=myObjList;
}
私有void textBox1\u TextChanged(对象发送方,事件参数e)
{
BindingList filtered=新的BindingList(myObjList.Where(obj=>obj.Name.Contains(textBox1.Text)).ToList());
dataGridView1.DataSource=已筛选;
dataGridView1.Update();
}
}
公共类myObj
{
公共myObj(字符串LastName,字符串名称)
{
this.LastName=LastName;
this.Name=Name;
}
公共字符串LastName{get;set;}
公共字符串名称{get;set;}
}
}我已经阅读了MSDN文档,现在已经应用了BindingList。但是如果我在文本框中键入字母,则不会发生任何事情
BindingList
不会实现IBindingListView
。