2012-03-21 18 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でプロパティにアクセスしてコードビハインドを使用しようとしましたが、動作していないようです。何か案は?コードビハインドなしでそれを処理する方が良いでしょうか?

<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> 

は - 私は架空のフィールド「USER_NAME」でWHERE句フィルタを追加することを参照してください(またはその他:あなたはSQL ServerとのSqlClientプロバイダーを使用している場合

+0

どのようにユーザータイプを決定していますか? – Sinaesthetic

+0

私は自分の施設IDでユーザータイプを決定しています。 – user1165687

答えて

0

、あなたは次のように照会構築することができますフィールド)と@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

+1

SqlDataSourceのIDは、インスタンス変数としてのコードの中でアクセス可能でなければならない(MUST)。この場合、を定義すると、このインスタンス変数にアクセスすることができます。他のコントロールをページに追加し、コードビハインド内のそのプロパティにアクセスしてみてください。 – outlookrperson

関連する問題