Как сделать сортировку и фильтрацию для 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);
Я думаю, что сортировка и фильтрация будут работать нормально, если я удалю навигатор привязки, но разбиение на страницы-это требование для меня. Пожалуйста, предложите любые решения.