Фильтровать данные с помощью EntityDataSource

Я использую EF 4, C# и MS Membership Provider.

У меня есть GridView с DataSource веб-элементом управления EntityDataSource.

Я хотел бы отфильтровать данные с помощью EntityDataSource, применить фильтр для текущего вошедшего в систему пользователя, это значение следует взять с помощью поставщика MS Memebership ( Membership.GetUser(); ).

Теперь я не могу указать какой-либо параметр в EntityDataSource, который позволил бы мне расставить точки (в разделе «Где/автоматически создать выражение «Где», используя предоставленный параметр).

У тебя есть идеи?

Пожалуйста, предоставьте мне образец кода. Спасибо за ваше время!


person GibboK    schedule 28.03.2011    source источник


Ответы (1)


Вы не можете декларативно привязать удостоверение пользователя в разметке непосредственно к EntityDataSource. Но в основном есть два обходных пути:

Первый более простой, но требует кода программной части. Вы можете использовать общий asp:Parameter и установить его значение в коде программной части для идентификации пользователя:

Разметка:

<asp:EntityDataSource ID="MyEntityDataSource" runat="server" 
    ConnectionString="name=MyContext" 
    DefaultContainerName="MyContext" 
    EntitySetName="MyObjectSet" 
    AutoGenerateWhereClause="False"
    Where="it.Username = @Username" 
    <WhereParameters>
        <asp:Parameter Name="Username" Type="String" />
    </WhereParameters>
</asp:EntityDataSource>

Код программной части:

protected void Page_Load(object sender, EventArgs e)
{
    MyEntityDataSource.WhereParameters["Username"].DefaultValue =
        User.Identity.Name;
}

Второй способ — создать пользовательский параметр. Пример того, как это сделать, показан здесь. Примечание. Пример основан на asp:SqlDataSource, но он должен работать и для EntityDataSource, если вы убедитесь, что используете WhereParameters в EntityDataSource вместо SelectParameters в SqlDataSource.

person Slauma    schedule 28.03.2011
comment
Спасибо, Слаума, я последовал твоему совету и реализовал пользовательский параметр. Спасибо за ваше время - person GibboK; 29.03.2011