Search code examples
asp.netparameter-passingwindows-authenticationsqldatasourceuser-identification

Passing Windows User Id as parameter to SQLDataSource gives databinding exception


First question is, Am I on the right path?.ıs there a better way to pass it as parameter? If I am on the right path, please show me how can I solve the below error.

The following solution does not help me with this problem: HTTPContext.Current.User.Identity.Name not working inside a control?

My code:

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

Gives the below error:

Error Details


Solution

  • try this

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

    or

     protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SqlDataSource1.SelectParameters["Requestor"].DefaultValue = 
                              HttpContext.Current.User.Identity.Name;
            }
        }