Фильтрация SqlDataSource на основе пользователя - PullRequest
0 голосов
/ 22 марта 2012

Я извлекаю данные из своей базы данных, что легко сделать, назначив запрос SelectCommand. Однако я хочу отображать определенные записи в зависимости от типа пользователя, который вошел в систему. Я использую ASP.Net & 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>

Я пытался использовать выделенный код, обращаясь к свойствам через его идентификатор, но, похоже, это не работает. Есть идеи? или было бы лучше справиться с этим без кода позади?

1 Ответ

0 голосов
/ 22 марта 2012

Если вы используете 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);
    }

Я надеюсь, что этопомогает.

...