Я предлагаю построить бизнес-объект между представлением проектирования и уровнем доступа к данным. На бизнес-уровне вы можете передать параметр, указывающий, что такое фильтр, и действовать соответственно. Затем вам просто нужно установить фильтр по умолчанию и вызвать MyGridView.DataBind () при изменении фильтра. Если это веб-приложение, этот бизнес-объект может находиться в
app_code\BLL
Product.cs
Product.cs будет содержать параметр «filter» и другие параметры, необходимые для уровня доступа к данным, например, orderBy, rowStart, rowEnd. Например,
public class Product
{
public List<Product> GetAll(string filter, string orderBy, int startRowIndex, int maximumRows)
{
List<Product> products = null;
switch(filter)
{
case "option1":
// to do: products = some data access call
break;
case "option2":
// to do: products = some other data access call
break;
default:
throw new InvalidOperationException("Unexpected filter option.");
}
return products;
}
}
Ваш ObjectDataSource будет ссылаться на бизнес-уровень, а не на уровень доступа к данным:
<asp:ObjectDataSource
TypeName="MyAssembly.BLL.Product"
SelectMethod="GetAll"
...
<SelectParameters>
<Parameter name="filter"...
<Paramter name="param1"...
<asp:gridview ...
DataSourceId="obGridViewSource"
Удачи!