基于用户筛选SqlDataSource

本文关键字:筛选 SqlDataSource 用户 于用户 | 更新日期: 2023-09-27 18:28:30

我正在从数据库中检索数据,这很容易通过将查询分配给SelectCommand来完成。然而,我想根据登录的用户类型显示某些记录;C#。

<asp:SqlDataSource ID="SqlDataSourceInbox" runat="server"
    ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:DBConnectionString.ProviderName %>" 
    SelectCommand="SELECT MESSAGE_ID, FACILITY_ID, TYPE, DEPARTMENT, STATUS, REMARKS
                   FROM INBOX ORDER BY DATE_RECIEVED"
</asp:SqlDataSource>

我试图通过它的ID访问属性来使用代码隐藏,但这似乎不起作用。有什么想法吗?还是在没有代码的情况下处理它更好?

基于用户筛选SqlDataSource

如果您使用的是Sql Server和SqlClient Provider,您可以按照如下方式构造查询:

<asp:SqlDataSource ID="SqlDataSourceInbox" 
     SelectCommand="SELECT MESSAGE_ID, FACILITY_ID, TYPE, DEPARTMENT, STATUS, REMARKS
                    FROM INBOX ORDER BY DATE_RECIEVED
                    WHERE USER_NAME=@UserName"
     runat="server">
</asp:SqlDataSource>

请注意,我正在添加一个WHERE子句,该子句通过假设字段"USER_NAME"(或您想要的其他字段)和参数@UserName进行筛选。

因此,在后面的代码中,您可以获得记录的用户名,并添加具有其值的select参数:

    protected void Page_Load(object sender, EventArgs e)
    {
        string user = User.Identity.Name;
        SqlDataSourceInbox.SelectParameters.Clear();
        SqlDataSourceInbox.SelectParameters.Add("@UserName", user);
    }

我希望它能有所帮助。