Как связать данные с несколькими источниками данных - PullRequest
2 голосов
/ 29 марта 2011

Могу ли я связать источник данных с 2 источниками данных. Сценарий состоит в том, что мой список данных привязан к представлению конструктора, в котором отображается список продуктов. Я хочу добиться того, чтобы, когда пользователь нажимает на фильтр бокового меню, список данных должен показывать результаты относительно этого фильтра, но Я не знаю, как отключить предыдущее связывание списка данных и связать его с новым списком данных в зависимости от выбранной опции фильтра.

1 Ответ

1 голос
/ 01 апреля 2011

Я предлагаю построить бизнес-объект между представлением проектирования и уровнем доступа к данным. На бизнес-уровне вы можете передать параметр, указывающий, что такое фильтр, и действовать соответственно. Затем вам просто нужно установить фильтр по умолчанию и вызвать MyGridView.DataBind () при изменении фильтра. Если это веб-приложение, этот бизнес-объект может находиться в

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;
  }
}

Ваш ObjectDataSource будет ссылаться на бизнес-уровень, а не на уровень доступа к данным:

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

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

Удачи!

...