DataGridView过滤器不工作
我知道这个主题有好几个线程,但我已经尝试了一切,仍然没有运气过滤我的datagridview。我试图根据用户在文本字段中输入的值来过滤datagridview的行。 datagridviews数据源在下面提供的数据源中设置。DataGridView过滤器不工作
所以这里是我使用的代码。我没有得到任何错误,datagridview根本不会改变。 ManufacturerService.GettAll返回制造商的名单,我将其转换为一个的BindingList到
bsManufacturers.DataSource = new BindingList<Manufacturer>(ManufacturerService.GetAll(_ctx));
在此代码运行文本框的TextChanged事件。我已经检查过断点等。该代码在执行过滤器字符串正确时执行。
private void FilterData(string str)
{
bsManufacturers.Filter = string.Format("Name like '%{0}%'", str);
dgvManufacturers.Refresh();
}
任何帮助?或至少解释为什么这不起作用?我一直在做这个了好几个小时,只是不能似乎找到一个anwser任何地方
我用这个项目解决了这个问题: http://blw.sourceforge.net/
我个人认为应该有这样做的更好的方式,但它的工作,现在我猜,我将不得不很乐意与“足够好”目前。
这里是工作代码。无论如何,重要的部分。
private void PopulateDataGridView()
{
blvManufacturers = new BindingListView<Manufacturer>(ManufacturerService.GetAll(_ctx));
_bsManufacturers = new BindingSource { DataSource = _blvManufacturers};
dgvManufacturers.DataSource = _bsManufacturers;
}
private void FilterData(string str)
{
// Change the filter of the view.
blvManufacturers.ApplyFilter(
delegate(Manufacturer manu)
{
// uses ToLower() to ignore case of text.
return manu.Name.ToLower().Contains(str.ToLower());
}
);
}
我不要以为你需要为此使用绑定列表,你最好使用DataTable作为“绑定源”的数据源。
然后,你可以使用下面你筛选数据方法: -
DataTable.DefaultView.RowFilter = string.format("Name like '%{0}%'", str);
你会设置它是这样的: -
Binding Source.Datasource = DataTable,
DatagridView.Datasource = Binding Source;
如果你这样做,你甚至不会需要刷新你datatgrid,它会自动做到这一点。
希望这会有所帮助。
数据排序信息包含在网格标题中。用户可以在一个或多个标题中设置单个或多个排序。在规划层面,排序看上去如下
//Get top-level header
Header header = grid.Headers[0];
header["Product"].SortDirection = SortDirection.Ascending;
header["Price"].SortDirection = SortDirection.Descending;
设置Column.Sortable
属性设置为false足以使软件只能从通过UI dapfor在修改排序阻止用户。 com
尝试此操作,并将dgv数据源设置为null,然后将其设置为bindingsource。虽然我打破并检查绑定源的属性的过滤器属性设置正确,但仍然datagridview不过滤 – limlim 2012-07-09 07:02:19
好吧,所以我发现道具SupportsFiltering = false。 http://msdn.microsoft。com/en-us/library/system.windows.forms.bindingsource.supportsfiltering.aspx我仍然不明白为什么。应该BindingList没有实现这个接口? – limlim 2012-07-09 07:53:06
试试我更新后的帖子。 – BizApps 2012-07-09 07:54:39