SrikantSahu Ответов: 0

Как сделать сортировку и фильтрацию для datagridview с помощью bindingnavigator для разбиения на страницы


У меня есть DataGridView, который использует BindingNavigator для разбиения на страницы.
Вот пример кода для привязки сетки
//Pagination code
                    BindingNavigator1.BindingSource = BindingSource1;
                    BindingSource1.CurrentChanged += BindingNavigator1_CurrentChanged;
                    BindingSource1.DataSource = new PageOffsetList
                    {
                        TotalRecords = myDataTable.Rows.Count, //The dataTable
                        PageSize = pageSize
                    };

//Grid binding
private void BindingNavigator1_CurrentChanged(object sender, EventArgs e)
        {
            // The desired page has changed, so fetch the page of records using the "Current" offset 
            if (myDataTable!= null)
            {
                var offset = (int)BindingSource1.Current;
                var dataTable = myDataTable.Clone();
                dataTable.Rows.Clear();
                totalRecords = myDataTable.Rows.Count;

                for (int i = offset; i < offset + pageSize && i < totalRecords; i++)
                {
                    dataTable.ImportRow(myDataTable.Rows[i]);

                }
                
                BindingSource bs = new BindingSource();
                bs.DataSource = dataTable.DefaultView;
                DataView1.DataSource = bs;
                
                
            }
        }


Что я уже пробовал:

1) Теперь я вижу, что пагинация работает. Сортировка также работает в пределах одной страницы при нажатии на заголовок столбца, но не влияет на другие страницы. Как я могу заставить сортировку работать для всех страниц?

2) для фильтрации я использую DataGridViewAutoFilter.dll . При этом фильтрация также работает, но только для одной страницы. Как заставить его работать на всех страницах.

Пример кода здесь.
// Add the AutoFilter header cell to each column.
                var col = ValidateGrid.Columns["Column1"];
                col.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(col.HeaderCell);

                col = ValidateGrid.Columns["Column2"];
                col.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(col.HeaderCell);


Я думаю, что сортировка и фильтрация будут работать нормально, если я удалю навигатор привязки, но разбиение на страницы-это требование для меня. Пожалуйста, предложите любые решения.

0 Ответов