2012-03-21 83 views
0

我从我的数据库中检索数据,这很容易通过将查询分配给SelectCommand来完成。不过,我想根据登录用户的类型显示某些记录。我正在使用ASP.Net & C#。基于用户筛选SqlDataSource

<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访问属性,但似乎并没有工作使用代码隐藏。有任何想法吗?或者是否最好在没有代码隐藏的情况下处理它?

+0

你如何确定用户类型? – Sinaesthetic 2012-03-22 00:21:25

+0

我正在通过他们的设施ID确定用户类型。 – user1165687 2012-03-22 00:43:32

回答

0

如果您使用的是SQL Server和SqlClient提供,你可以构造你查询如下:

<asp:SqlDataSource ID="SqlDataSourceInbox" 
    SelectCommand="SELECT MESSAGE_ID, FACILITY_ID, TYPE, DEPARTMENT, STATUS, REMARKS 
        FROM INBOX ORDER BY DATE_RECIEVED 
        WHERE [email protected]" 
    runat="server"> 
</asp:SqlDataSource> 

请参阅I'm由假想场“USER_NAME”添加WHERE子句过滤(或其他你想要的字段)和一个参数@UserName。

所以,在后面的代码,你得到的登录用户名和它的值添加所选参数:

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

我希望它能帮助。

+0

这看起来不错,但我奇怪的是在我的代码隐藏文件中,它不识别ID =“SqlDataSourceInbox”。一般来说,我应该可以在代码隐藏权利中访问这个?我可能需要看看为什么不知道。我很感激帮助。 – user1165687 2012-03-22 00:40:27

+1

SqlDataSource的ID务必在后面的代码中作为实例变量访问。在这种情况下,如果您定义应该可以访问此实例变量。尝试将其他控件添加到页面并在代码隐藏中访问其属性。 – outlookrperson 2012-03-22 09:57:23