2013-03-01 3 views
4

У меня есть gridview, который привязан к таблице в базе данных с помощью EntityDataSource. Я заполняю gridview только элементами в db, которые соответствуют предложению where.Группы Gridview аналогичные строки в одном

FRUIT  COLOR NUMB.SEEDS 
ORANGE  ORANGE 3 
APPLE  RED  4 
ORANGE  ORANGE 2 
STRAWBERRY RED  0 

То, что я хочу, чтобы суммировать аналогичные строки относительно NUMB.SEEDS, как это:

FRUIT  COLOR NUMB.SEEDS 
ORANGE  ORANGE 5 
APPLE  RED  4 
STRAWBERRY RED  0 

Некоторые подсказки, пожалуйста? Я не знаю, с чего начать.

Это где я поставил условие, где:

<asp:EntityDataSource ID="MyEfDataSource" 
    runat="server" ContextTypeName="MyContext" 
    EntitySetName="Fruits" EntityTypeFilter="Fruit" 
    AutoPage="true" AutoSort="true" Where="it.idName = @idName"> 
    <WhereParameters> 
     <asp:ControlParameter ControlID="ddlFruit" PropertyName="SelectedValue" Type="Int32" DefaultValue="0" Name="idName" /> 
    </WhereParameters> 
    </asp:EntityDataSource> 
+1

вы написать где положение в LINQ? если да - не могли бы вы показать их здесь? –

ответ

1

в SQL, вы будете использовать пункт GROUP BY. Я думаю, что это должно работать в EntityDataSource:

<asp:EntityDataSource ID="MyEfDataSource" 
    runat="server" ContextTypeName="MyContext" 
    EntitySetName="Fruits" EntityTypeFilter="Fruit" 
    AutoPage="true" AutoSort="true" 
    Select="it.FRUIT, it.COLOR, SUM(it.[NUMB.SEEDS])" 
    Where="it.idName = @idName" 
    GroupBy"it.FRUIT, it.COLOR" > 
    <WhereParameters> 
     <asp:ControlParameter ControlID="ddlFruit" PropertyName="SelectedValue" Type="Int32" DefaultValue="0" Name="idName" /> 
    </WhereParameters> 
    </asp:EntityDataSource> 

Обратите внимание, что я звоню свои поля в «Select» и «где» выражений на основе столбцов вы положили в свой вопрос. Они могут отличаться в вашем фактическом источнике данных.

+0

В select = "...", следует ли писать каждое поле, которое появляется в моем источнике данных? – Camilla

+0

@Camilla Только те, которые вы хотите отобразить в своем «GridView». – jadarnel27

1

Вы можете использовать событие QueryCreated.

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities" EnableFlattening="False" 
    EntitySetName="FRUITS" 
    onquerycreated="EntityDataSource1_QueryCreated"> 
</asp:EntityDataSource> 

protected void EntityDataSource1_QueryCreated(object sender, QueryCreatedEventArgs e) 
{ 
    var fruits = e.Query.Cast<Fruits>(); 
    e.Query = fruits.GroupBy(fruit => fruit.COLOR) 
        .Select(group => new { FRUIT, COLOR, group.Sum(fruit => fruit.SEEDS)});; 
} 

См: Applying LINQ Queries to EntityDataSource

Смежные вопросы