Передача идентификатора пользователя Windows в качестве параметра в SQLDataSource дает исключение привязки данных - PullRequest
0 голосов
/ 26 марта 2012

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

Следующее решение не помогает мне с этой проблемой: HTTPContext.Current.User.Identity.Name не работаетвнутри элемента управления?

Мой код:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyDbConn %>" 
    SelectCommand="SELECT id, Bookname, RequestType, Requestor, RequestDate FROM Requests WHERE (Requestor LIKE '%' + @Requestor + '%')">
    <SelectParameters>
        <asp:Parameter DefaultValue= "<%# HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
    </SelectParameters>
</asp:SqlDataSource>

Выдает следующую ошибку:

Error Details

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Попробуйте это я не проверял

заменить # на =

<asp:Parameter DefaultValue= "<%= HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" />
0 голосов
/ 26 марта 2012

попробуйте

public Requests()
{
   this.Init += (_o, _e) => 
   {
       this.SqlDataSource1.Selecting += (o, e) =>
       {
           (o as SqlDataSourceView)
             .SelectParameters["Requestor"].DefaultValue = 
                      HttpContext.Current.User.Identity.Name;
       }
   }
}

или

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            SqlDataSource1.SelectParameters["Requestor"].DefaultValue = 
                          HttpContext.Current.User.Identity.Name;
        }
    }
0 голосов
/ 26 марта 2012

хорошо .... он говорит, что вы не можете использовать <% #%> (выражение привязки данных) для этого элемента управления.

Я не знаком с этим элементом управления, но вы можете попробовать установить значение свойства te в начале жизненного цикла страницы.

...