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

时间:2011-03-29 09:27:56

标签: data-binding datasource datalist

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

1 个答案:

答案 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"
祝你好运!