2011-03-29 89 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" 

祝你好運!