Упорядочение результатов (EntityDataSource)

Visual Studio 2010

Обновлен: Ноябрь 2007

Упорядочивать результаты в элементе управления EntityDataSource можно с помощью свойства OrderBy. Свойство OrderBy элемента управления EntityDataSource содержит строку, представляющую выражение ORDER BY запроса Entity SQL. Эта строка передается без изменений в объект ObjectQuery<T>, который выступает в качестве источника данных для элемента управления EntityDataSource. Строка, заданная в свойстве OrderBy, имеет такой же формат, что и строка, передаваемая методу OrderBy объекта ObjectQuery<T>. Примеры использования предложения ORDER BY для упорядочения результатов запроса см. в разделе Практическое руководство. Сортировка данных (Entity Framework).

Как и в случае с методом OrderBy класса ObjectQuery<T>, можно передать параметры в предложение ORDER BY свойства OrderBy. Необходимо определить свойство OrderByParameters элемента управления EntityDataSource, чтобы указать ParameterCollection для предложения ORDER BY в запросе. Свойство OrderByParameters использует именованный аргумент для ссылки на параметр, назначенный в свойстве OrderBy.

Если свойство OrderByParameters не определено, подстановка параметров не выполняется. Имени параметра в предложении ORDER BY с префиксом "@" должно соответствовать имя в ParameterCollection. Для параметров, заданных в ParameterCollection, значение null не допускается.

Можно автоматически создать предложение ORDER BY, установив для свойства AutoGenerateOrderByClause элемента управления EntityDataSource значение true. После этого элемент управления EntityDataSource автоматически создает предложение ORDER BY на основе параметра в ParameterCollection, присвоенного свойству OrderByParameters. Это устраняет необходимость явного присвоения предложения ORDER BY свойству OrderBy. При автоматическом создании предложения ORDER BY на основе свойства OrderByParameters необходимо убедиться, что свойство Name параметра в коллекции определяет одно свойство элемента, возвращенного из запроса.

Пример

В следующем примере автоматически генерируется предложение ORDER BY и используется значение свойства orderByDropDownList для присваивания значения параметру.

<asp:EntityDataSource ID="SalesOrderHeader" runat="server" 
    ConnectionString="name=AdventureWorksEntities"
    DefaultContainerName="AdventureWorksEntities" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" EntitySetName="SalesOrderHeader" 
    Where="it.OnlineOrderFlag = true" AutoGenerateOrderByClause="True">
    <OrderByParameters>
        <asp:ControlParameter Name="OrderByParameter" 
            ControlID="orderByDropDownList" Type="String" />
    </OrderByParameters>
</asp:EntityDataSource>

Показ: