2012-03-21 58 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