我正在使用c#,datatable和bindingsource控件。 如果我们在数据集中有一个名为Recordsn的列名,那么我们可以按如下所示进行过滤。
bindingSource1.Filter = "Recordsn >= 30 and Recordsn <= 50" ;
但是,在某些情况下,我没有使用Recordsn列。由于Recordsn只是行数,我相信我们可以在不必在数据集中插入Recordsn列的情况下进行过滤,并且仍然可以将行过滤到获取从某个起始行到结束行的行。 有办法吗? 谢谢。 如果在bindingsource上不可能,有没有办法在datatable上执行此操作 注意:我使用30和50只是为了使问题更简单,它可以是任何范围。
答案 0 :(得分:0)
设置 BindingSource.Filter 属性只是将该过滤器字符串值传递到 IBindingListView ,该 IBindingListView 是附加到 BindingSource 的源。 Filter 字符串的格式取决于实现 IBindingListView 的对象。
当您使用 DataSet 作为源时,这意味着您实际上是绑定到附加到特定 DataTable 的 DataView DataSet 。查看{em> DataView.RowFilter 属性的MSDN,似乎无法过滤行数。
简而言之,答案是否定的,你不能按需要做。要解决这个问题,您可以创建自己的 DataView 和 DataTable 之间的过滤类,并限制它公开的行。