我可以使用2个数据源绑定数据列表。场景是我的数据列表绑定在设计视图上,该视图显示了产品列表,我想要实现的是,当用户点击侧面菜单过滤器时,datalist应显示与该过滤器点击相关的结果,但是我不知道如何禁用以前的datalist绑定并根据点击的过滤器选项将其绑定到新的datalist。
答案 0 :(得分:1)
我建议在设计视图和数据访问层之间构建业务对象。在业务层中,您可以传递指示过滤器的参数,并相应地执行操作。然后,您只需设置一个默认过滤器,并在过滤器更改时调用MyGridView.DataBind()。如果这是一个Web应用程序,则此业务对象可能位于
中app_code\BLL
Product.cs
Product.cs将包括“过滤器”参数和数据访问层所需的其他参数,例如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"
祝你好运!