Я не уверен, почему вы хотите отобразить все записи из таблицы, кроме записей, которые принадлежат определенному фильтру в этой таблице. Как вы хотите уточнить, что фильтруется и что нефильтрованная часть?
Вы можете использовать UNION ALL для объединения двух наборов результатов. Вы также можете добавить столбец, который содержит логическое значение, если он принадлежит отфильтрованному набору. Таким образом, вы сможете добавлять в строки различные CssClass в соответствии со значением этого столбца из RowDataBound в Codebehind.
Например:
SELECT Foo.*,0 AS IsFiltered FROM Foo
UNION ALL
SELECT Foo.*,1 AS IsFiltered FROM Foo
where Name like 's%
Для этого вам нужен только один источник данных SQL.
Чтобы установить другой CssClass для отфильтрованных записей:
Private Sub GridRowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim row As DataRowView = DirectCast(e.Row.DataItem, DataRowView)
Dim isFiltered As Boolean = CType(row("IsFiltered"), Boolean)
If isFiltered Then e.Row.CssClass = "FilteredRecords"
End If
End Sub