2011-03-29 100 views
2

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

回答

1

我建议在设计视图和数据访问层之间建立一个业务对象。在业务层中,您可以传递一个参数来指示过滤器是什么,并据此采取行动。然后你只需要设置一个默认过滤器,并在过滤器发生变化时调用MyGridView.DataBind()。如果这是一个Web应用程序,该业务对象可能生活在

app_code\BLL 
    Product.cs 

Product.cs将包括一个“过滤器”参数,需要对数据访问层的其他参数,可以例如,排序依据,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" 

祝你好运!