2014-11-30 4 views
-2

나는 사용자가 자신의 고객의 기록을 검색하고 표시하는 판매 페이지를 가지고 있습니다. 이 페이지를 사용할 여러 사용자가 있습니다. 내 문제는 어떻게 사용자가 자신의 Userid 통해 사용자의 레코드를 표시합니다 로그인 할 때 페이지를 만드는 방법입니다.사용자 ID별로 레코드를 선택하고 표시하려면 어떻게합니까?

if(!IsPostBack) 
    { 
     Session["UserId"] = User.Identity.Name; 

     // using (var connection = new SqlConnection("mtbase")) 
     { 

      string value = null; 
      if (HttpContext.Current.User != null) 
      { 
       value = HttpContext.Current.User.Identity.Name; 
      } 
      else 
      { 
       value = HttpContext.Current.Request.LogonUserIdentity.Name; 
      } 
      var split = value.Split(new char[] { '\\' }); 
      var UserId = split[split.Length - 1]; 
      using (var cmd = new SqlCommand("SELECT * FROM FixPrice WHERE [email protected]", new SqlConnection("mtbase"))) 
      { 
       // Add your parameter before opening the connection 
       cmd.Parameters.AddWithValue("@UserId", UserId); 
       // Open connection 
       cmd.Connection.Open(); 
       using (var reader = cmd.ExecuteReader()) 
       { 

       } 
       cmd.Connection.Close(); 
      } 
     } 
    } 
} 

내 데이터베이스 테이블 :

테이블 이름 FixPrice

아이디 INT (PRIMARY KEY)

날짜 datatime

나는 다음과 같이 귀하의 예를 적용 관리 nvarchar

카테고리 NVARCHAR

브랜드 VARCHAR

가격 돈

수량 플로트

합계 돈

사용자 아이디 INT (FOREIGN KEY)

암 여전히 같은 오류가 발생 :

초기화 문자열의 형식이 인덱스 0에서 시작하는 사양을 준수하지 않습니다.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.ArgumentException이 :

행 31 : var에 분할 = value.Split (새 숯불 [초기화 문자열의 형식이 인덱스 0

소스 오류에서 시작하는 사양에 맞지 않습니다 ] { '\'}); 줄 32 : var UserId = split [split.Length - 1]; 라인 33 : using (var cmd = new SqlCommand ("SELECT * FROM FixPrice WHERE UserId = @ UserId", 새 SqlConnection ("Skyformatbase"))) 라인 34 : { 라인 35 : 연결

소스 파일 : C : \ 사용자 \ migold 비주얼 스튜디오 \ 문서 \ 2013 \ 웹 사이트는 SKYAPP \ DashBoard.aspx.cs 라인 \ : 33

+0

지금까지 수행 한 조치를 제공해 주시겠습니까? –

+0

사용자가 응용 프로그램에 로그인하면 해당 사용자의 고유 ID를 저장해야합니다. 사용자가 판매 페이지에 착륙하면 고유 ID를 사용하여 해당 사용자의 결과를 표시 할 수 있습니다. –

+0

SQL/linq 'where'명령을 찾습니다. –

답변

-1

당신은 해당 페이지의 Page_Load 이벤트에서 모든 코드를 넣을 수 있습니다 . 먼저이 조금에

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    // Response.Write("<br>Page has been loaded first time."); 
    //Read the user ID from session , asp.net membership or identity. 
    // call database functions to read the record respect to that user and bind the 
list view , grid 


    } 
} 
1

하자 초점 :

  var query = "SELECT * FROM FixPrice WHERE UserName @Username"; 
     using (var command = new SqlCommand(query, connection)) 
     { 
      // Open connection 
      connection.Open(); 
      // Add your parameter 
      command.Parameters.AddWithValue("@Username", User.Identity.Name); 
      using (var reader = command.ExecuteReader()) 

귀하의 SQL 당신은 = (같음) 기호를 중단 SELECT * FROM FixPrice WHERE [email protected];

말을 할 필요가있다.

다음으로 사용자의 이름이이고 사용자의 사용자 이름이이 아닙니다.

그러면 물론 어디서나 연결을 닫지 않을 것입니다. 이 형식으로 간소화 될 수 있습니다.

 string value = null; 
     if (HttpContext.Current.User != null) { 
     value = HttpContext.Current.User.Identity.Name; 
     } else { 
     value = HttpContext.Current.Request.LogonUserIdentity.Name; 
     } 
     var split = value.Split(new char[] { '\\' }); 
     var userName = split[split.Length - 1]; 
     using (var cmd = new SqlCommand("SELECT * FROM FixPrice WHERE [email protected]", new SqlConnection("mtbase"))) 
     { 
     // Add your parameter before opening the connection 
     cmd.Parameters.AddWithValue("@UserName", userName); 
     // Open connection 
     cmd.Connection.Open(); 
     using (var reader = cmd.ExecuteReader()) { 
      ... 
     } 
     cmd.Connection.Close(); 
     } 

이 정보가 도움이되기를 바랍니다.

관련 문제