Data binding 如何将datalist与多个数据源绑定

Data binding 如何将datalist与多个数据源绑定,data-binding,datasource,datalist,Data Binding,Datasource,Datalist,我可以用2个数据源绑定一个数据列表吗。场景是我的数据列表绑定在显示产品列表的设计视图上,我想要实现的是,当用户单击侧菜单过滤器时,数据列表应显示与该过滤器单击相关的结果,但是我不知道如何禁用datalist以前的绑定,并根据单击的筛选选项将其与新datalist绑定。我建议在设计视图和数据访问层之间构建一个业务对象。在业务层中,您可以传递一个指示过滤器是什么的参数,并相应地执行操作。然后,您只需设置一个默认过滤器,并在过滤器更改时调用MyGridView.DataBind()。如果这是一个web

我可以用2个数据源绑定一个数据列表吗。场景是我的数据列表绑定在显示产品列表的设计视图上,我想要实现的是,当用户单击侧菜单过滤器时,数据列表应显示与该过滤器单击相关的结果,但是我不知道如何禁用datalist以前的绑定,并根据单击的筛选选项将其与新datalist绑定。

我建议在设计视图和数据访问层之间构建一个业务对象。在业务层中,您可以传递一个指示过滤器是什么的参数,并相应地执行操作。然后,您只需设置一个默认过滤器,并在过滤器更改时调用MyGridView.DataBind()。如果这是一个web应用程序,则此业务对象可能位于

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;
  }
}
公共类产品
{
public List GetAll(字符串过滤器、字符串orderBy、int startRowIndex、int maximumRows)
{
列出产品=空;
开关(过滤器)
{
案例“选项1”:
//待办事项:产品=一些数据访问呼叫
打破
案例“选择2”:
//待办事项:产品=其他一些数据访问呼叫
打破
违约:
抛出新的InvalidOperationException(“意外筛选选项”);
}
退货产品;
}
}
ObjectDataSource将引用业务层,而不是数据访问层:

<asp:ObjectDataSource
  TypeName="MyAssembly.BLL.Product"
  SelectMethod="GetAll"
  ...
  <SelectParameters>
    <Parameter name="filter"...
    <Paramter name="param1"...

<asp:gridview ...
  DataSourceId="obGridViewSource"