0

첫 번째 질문은 올바른 경로에 있습니까?. 매개 변수로 전달하는 더 좋은 방법은 무엇입니까? 내가 올바른 길을 가고 있다면 아래의 오류를 어떻게 해결할 수 있는지 보여주십시오. 다음 솔루션은이 문제를 나에게 도움이되지 않습니다SQLDataSource에 매개 변수로 Windows 사용자 ID를 전달하면 데이터 바인딩 예외가 발생합니다.

: HTTPContext.Current.User.Identity.Name not working inside a control?

내 코드 :

<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

답변

0

는 =이

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

을 .... 그것은이 컨트롤에 < % # %> (데이터 바인딩 식)을 사용할 수 없다고 말합니다.

이 컨트롤에 익숙하지 않지만 페이지 수명주기 시작 부분에 te 속성 값을 설정해보십시오.

1

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

무언가 번호를 시도 =이 내가 그것을

가에 #을 대체 확인하지 않았다 시도 반환 할 때 "null"을 반환합니다. userid,하지만 null = – HOY