Как мы можем использовать свойство BindingSource.Filter, чтобы получить количество строк от 30 до 50 - PullRequest
1 голос
/ 30 декабря 2010

Я использую c #, datatable и bindingsource control. Если у нас есть имя столбца, называемое Recordsn в наборе данных, то мы можем фильтровать, как показано ниже.

bindingSource1.Filter = "Recordsn >= 30 and Recordsn <= 50" ;

Однако в некоторых случаях у меня нет столбца Recordsn. Поскольку Recordsn - это просто число строк, я считаю, что мы можем выполнить фильтрацию, не вставляя столбец Recordsn в набор данных, и при этом иметь возможность фильтровать строки получить строки от определенной начальной строки до конечной строки. Есть ли способ? Благодарю. Есть ли способ сделать это на datatable, если это невозможно на bindingsource Примечание: я использовал 30 и 50, чтобы сделать вопрос проще, это может быть любой диапазон.

1 Ответ

0 голосов
/ 30 декабря 2010

При установке свойства BindingSource.Filter просто значение строки фильтра передается в IBindingListView , который является источником, подключенным к BindingSource . Формат строки Filter зависит от объекта, который реализует IBindingListView .

Поскольку вы используете DataSet в качестве источника, это означает, что вы фактически привязываетесь к DataView , который присоединен к определенной DataTable из DataSet . Если посмотреть на MSDN для свойства DataView.RowFilter , то, похоже, нет возможности фильтровать по числу строк.

Короче говоря, ответ - нет, вы не можете делать то, что вам нужно. Чтобы обойти это, вы можете создать свой собственный класс фильтрации, который расположен между DataView и DataTable и ограничивает строки, которые он предоставляет.

...