首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EntityDataSource过滤数据

使用EntityDataSource过滤数据
EN

Stack Overflow用户
提问于 2011-03-28 16:02:09
回答 1查看 9K关注 0票数 4

我使用EF 4,C#和MS会员服务提供商。

我有一个带有DataSource的GridView,一个EntityDataSource网页控件。

我想过滤数据使用EntityDataSource,过滤器显示应用于当前登录的用户,此值应使用MS Memebership ( Membership.GetUser( );)。

现在,我不能在EntityDataSource中推断任何允许我加点的参数(在Where /使用提供的参数自动生成Where表达式)。

你有什么想法吗?

请给我提供一个代码样本。耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-29 03:21:20

您不能在标记中以声明方式将用户标识直接绑定到EntityDataSource。但基本上有两种变通方法:

第一种方法比较简单,但需要代码隐藏。您可以使用通用asp:Parameter,并在代码隐藏中将其值设置为用户的身份:

标记:

代码语言:javascript
复制
<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>

代码隐藏:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    MyEntityDataSource.WhereParameters["Username"].DefaultValue =
        User.Identity.Name;
}

第二种方法是创建一个自定义参数。如何做到这一点的示例如here所示。注意:这个示例是基于asp:SqlDataSource的,但是如果您确保在EntityDataSource中使用WhereParameters而不是SqlDataSource中的SelectParameters,那么它应该也适用于make。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5456150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档