2012-11-05 5 views
0

주어진 ID에 대해 내 테이블에서 3 "예"를 찾으면 전자 메일을 보냅니다. 따라서 아래의 코드에서 쿼리 문자열을 매개 변수로 사용하고 select 문에서이를 사용하고 있지만 쿼리 문자열 대신 DetailView에서 선택한 ID를 사용하고 싶습니다. 다음은 쿼리 고통 사용하는 코드입니다 :DetailView에서 선택한 ID를 매개 변수로 사용

protected void Check_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) 
    { 


     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 

     SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE ID [email protected] And (field1='Yes' And field2='Yes' And field3='Yes')", con); 
     cmd.Parameters.Add("@ID", Request.QueryString["ID"]); 
     cmd.Connection = con; 
     con.Open(); 
     int result = (int)cmd.ExecuteScalar(); 

     if (result == 1) 
     { 
      send email... 
     } 

을 여기에 내가 수정하고 DetailView ID를 사용하려고하지만 제대로 작동하지 않습니다 업데이트 된 코드는, 무슨 내가 잘못 여기 PLS 도움말을하고있는 중이 야 :

protected void Check_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) 
    { 

     string ID = Detailview1.Rows[0].Cells[1].Text; 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 
     SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE ID [email protected] And (field1='Yes' And field2='Yes' And field3='Yes')", con); 
     cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID; 

     cmd.Connection = con; 
     con.Open(); 
     int result =(int) cmd.ExecuteScalar(); 

     if (result == 1) 
     { 
     send email... 
     } 
+0

어떤 오류가 발생하고 있습니까? –

+0

나는이 필드에 대해 예 또는 아니오를 선택할 수있는 드롭 다운 상자를 가지고 있으므로 문제는 3 번째 필드에서 예를 선택한 후 이메일이 즉시 실행되지 않는다는 것입니다. 나는 다시 예선을 선택해야합니다. 예를 선택한 경우에도 네 번째 시간에만 시작됩니다. 그러나 이상한 것은 쿼리 문자열에 사용하는 코드가 잘 작동한다는 것입니다. 전자 메일은 세 번째 필드가 Yes로 바로 설정되면 실행됩니다. 감사. – moe

+0

언제 이벤트가 시작됩니까? 값이 변경되기 전에 이벤트가 발생하는 타이밍 일 수도 있고 변경을 완료하지 않을 수도 있습니다. – shookdiesel

답변

0

당신은 항상 대부분의 경우 헤더와 동일한 행을 찾는 것처럼 보입니다. 당신이 올바르게 e.Keys하여 ID를 얻을 수있는 모든 일을 설정하면

string ID = Detailview1.Rows[0].Cells[1].Text; 

대신이의 당신은 e 같은 이벤트의 매개 변수를 사용해야합니다. 디버그 모드에서 값을 확인할 수 있습니다.

+0

하지만 세부보기 컨트롤입니다. ID는 항상 첫 번째 행이며 ID 값은 항상 첫 번째 행과 두 번째 열입니다. – moe

+0

미안하지만, ID 값을 얻을 수 있습니다. 테이블에 ID 유형이 무엇입니까? QueryString 버전과 같은 방식으로 매개 변수를 추가하려고 했습니까? cmd.Parameters.Add ("@ ID", Request.QueryString [ "ID"]); –

+0

아니, 나는 전혀 쿼리를 사용하지 않기 때문에 그런 식으로 시도하지 않았다. 내가 뭘 놓치고있어? – moe

관련 문제