Without having read your code, I'd say the best way to filter is to use a DataView. You can bind to a DataView just like a DataTable. In fact, it may be the case that binding to a DataTable actually binds to that table's DefaultView. I'm sure there are others more knowledgeable than I who will confirm or deny this.