0

La première question est, suis-je sur le bon chemin?. Y a-t-il un meilleur moyen de le passer en paramètre? Si je suis sur le bon chemin, s'il vous plaît montrez-moi comment puis-je résoudre l'erreur ci-dessous.Passer l'identifiant utilisateur Windows en tant que paramètre de SQLDataSource donne une exception de liaison de données

La solution suivante ne me permet pas à ce problème: HTTPContext.Current.User.Identity.Name not working inside a control?

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

donne l'erreur ci-dessous:

Error Details

Répondre

0

essayer cette

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

ou

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

.... il indique que vous ne pouvez pas utiliser le <% #%> (expression de liaison de données) sur ce contrôle.

Je ne connais pas ce contrôle, mais vous pouvez essayer de définir la valeur de la propriété au début du cycle de vie de la page.

1

Essayez cette je n'ai pas vérifié Il

remplacer le # pour =

<asp:Parameter DefaultValue= "<%= HttpContext.Current.User.Identity.Name.Split('\\')[1] %>" Name="Requestor" /> 
+0

Changin # à =, retourne "null", quand # retourne le userid, mais null quand = – HOY

Questions connexes