过滤dataGridView行后,如何保留bindingNavigator的数据绑定?
How to keep the data bindings of the bindingNavigator after the dataGridView rows is filtered?
塞纳里奥:
(这是这些控件的原始绑定源)
itemsBindingNavigator.BindingSource = this.itemsBindingSource;
itemsDataGridView.DataSource = this.itemsBindingSource;
但是,当 itemsDataGridView 行被过滤时,当我 select 特定行或单元格时,itemsBindingNavigator 不再 connected/binded 到 itemsDataGridView。
如何解决这个问题?
提前致谢..
过滤方法如下:
private void searchNow()
{
try
{
string rowFilter = string.Format("CONVERT(Item_Id, System.String) LIKE '%{0}%'" +
" OR CONVERT(Item, System.String) LIKE '%{0}%'" +
" OR CONVERT(Price, System.String) LIKE '%{0}%'" +
" OR CONVERT(Unit, System.String) LIKE '%{0}%'" +
" OR CONVERT(Category, System.String) LIKE '%{0}%'", searchBox.Text);
this.bakeryDatabaseDataSet.Items.DefaultView.RowFilter = rowFilter;
itemsDataGridView.DataSource = this.bakeryDatabaseDataSet.Items;
itemsBindingNavigator.BindingSource.DataSource = this.bakeryDatabaseDataSet.Items;
}
catch (Exception ex)
{
throw ex;
}
}
你不能简单地用你提供的信息来回答这个问题,因为我们没有过滤方法;无论如何,解除绑定背后都有逻辑。导航器解除绑定的原因是因为 table 已经改变,内容不一样 - 所以单元格中的信息改变了,旧的导航单元格没有用。解决方法是通过过滤器将其与旧信息重新绑定(修改bindingSource1
以适应过滤器和DataBind()
)。
我做到了!! :) 它成功了!谢谢你的提示!我所做的是...
private void searchNow()
{
try
{
string rowFilter = string.Format("CONVERT(Item_Id, System.String) LIKE '%{0}%'" +
" OR CONVERT(Item, System.String) LIKE '%{0}%'" +
" OR CONVERT(Price, System.String) LIKE '%{0}%'" +
" OR CONVERT(Unit, System.String) LIKE '%{0}%'" +
" OR CONVERT(Category, System.String) LIKE '%{0}%'", searchBox.Text);
this.bakeryDatabaseDataSet.Items.DefaultView.RowFilter = rowFilter;
this.itemsBindingSource.DataSource = this.bakeryDatabaseDataSet.Items;
itemsBindingNavigator.BindingSource = this.itemsBindingSource;
itemsDataGridView.DataSource = this.itemsBindingSource;
}
catch (Exception ex)
{
throw ex;
}
}
塞纳里奥:
(这是这些控件的原始绑定源)
itemsBindingNavigator.BindingSource = this.itemsBindingSource;
itemsDataGridView.DataSource = this.itemsBindingSource;
但是,当 itemsDataGridView 行被过滤时,当我 select 特定行或单元格时,itemsBindingNavigator 不再 connected/binded 到 itemsDataGridView。
如何解决这个问题?
提前致谢..
过滤方法如下:
private void searchNow()
{
try
{
string rowFilter = string.Format("CONVERT(Item_Id, System.String) LIKE '%{0}%'" +
" OR CONVERT(Item, System.String) LIKE '%{0}%'" +
" OR CONVERT(Price, System.String) LIKE '%{0}%'" +
" OR CONVERT(Unit, System.String) LIKE '%{0}%'" +
" OR CONVERT(Category, System.String) LIKE '%{0}%'", searchBox.Text);
this.bakeryDatabaseDataSet.Items.DefaultView.RowFilter = rowFilter;
itemsDataGridView.DataSource = this.bakeryDatabaseDataSet.Items;
itemsBindingNavigator.BindingSource.DataSource = this.bakeryDatabaseDataSet.Items;
}
catch (Exception ex)
{
throw ex;
}
}
你不能简单地用你提供的信息来回答这个问题,因为我们没有过滤方法;无论如何,解除绑定背后都有逻辑。导航器解除绑定的原因是因为 table 已经改变,内容不一样 - 所以单元格中的信息改变了,旧的导航单元格没有用。解决方法是通过过滤器将其与旧信息重新绑定(修改bindingSource1
以适应过滤器和DataBind()
)。
我做到了!! :) 它成功了!谢谢你的提示!我所做的是...
private void searchNow()
{
try
{
string rowFilter = string.Format("CONVERT(Item_Id, System.String) LIKE '%{0}%'" +
" OR CONVERT(Item, System.String) LIKE '%{0}%'" +
" OR CONVERT(Price, System.String) LIKE '%{0}%'" +
" OR CONVERT(Unit, System.String) LIKE '%{0}%'" +
" OR CONVERT(Category, System.String) LIKE '%{0}%'", searchBox.Text);
this.bakeryDatabaseDataSet.Items.DefaultView.RowFilter = rowFilter;
this.itemsBindingSource.DataSource = this.bakeryDatabaseDataSet.Items;
itemsBindingNavigator.BindingSource = this.itemsBindingSource;
itemsDataGridView.DataSource = this.itemsBindingSource;
}
catch (Exception ex)
{
throw ex;
}
}