过滤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;
        }
    }