2013-05-07 3 views
0

SQL 테이블을 업데이트하는 웹 양식이 있습니다. 양식이 예상대로 작동합니다. 새로운 사용자가 잘못된 항목을 작성하는 문제가 발생했습니다 (사용자가 실수를 저 지르지 않습니다!) 사용자가 항목을 역전시킬 수있는 권한을 부여해야합니다. 내가하고 싶었던 것은 단순히 폼에 체크 박스를 넣는 것입니다. 사용자가 적용 단추를 누르면 시스템은 정보를 테이블에 입력하는 저장 프로 시저를 실행하거나 테이블에서 정보를 삭제합니다. 내가 원했던 것은 case 문을 사용하는 것입니다 - chboxReverse.True라면 저장 프로 시저 2를 실행하고 저장 프로 시저 1을 실행하십시오. 저장 프로 시저가 완료된 후에 값을 false로 다시 설정하려고합니다..cs.aspx의 ASP case 문

protected void btnUpdate_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection con = new SqlConnection("server=(local);database=InvoiceSHC;Trusted_Connection=Yes")) 
    { 
     // Get the UserId of the logged in user 

     string UserName = ""; 
     if (HttpContext.Current.User.Identity.IsAuthenticated) 
     { 
      UserName = HttpContext.Current.User.Identity.Name.ToString(); 
     } 
     else 
     { 
      UserName = "UnauthenticatedUser"; 
     }   

     string Timestamp = DateTime.Now.ToString(); 
     //Not sure why you need a SqlDataAdapter unused here. 
     //SqlDataAdapter DA = new SqlDataAdapter("UpdateSHCInvoice", con); 
     SqlCommand cmd = new SqlCommand("UpdateSHCInvoice", con); 
     cmd.CommandType = CommandType.StoredProcedure; 

     cmd.Parameters.AddWithValue("@Ref", dlRef.SelectedItem.Value); 
     cmd.Parameters.AddWithValue("@PhaseName", dlPhase.SelectedItem.Value); 
     cmd.Parameters.AddWithValue("@PageType", dlPageType.SelectedItem.Value); 
     cmd.Parameters.AddWithValue("@Page", tbPage.Text); 
     cmd.Parameters.AddWithValue("@Percent", dlPercent.SelectedItem.Value); 
     cmd.Parameters.AddWithValue("@ChngType", dlChngType.SelectedItem.Value); 
     cmd.Parameters.AddWithValue("@UserName", UserName); 
     cmd.Parameters.AddWithValue("@Timestamp",Timestamp); 
     cmd.Parameters.AddWithValue("@Quantity", tbQty.Text); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 

     GridView1.DataBind(); 

내가 뭘하고 싶은 것은 바로 체크 박스 값에 따라 저장 프로 시저의 이름을 변경 모두 동일한 유지입니다 :

다음은 CS 파일 정보입니다.

이것이 가능합니까?

나는 비주얼 웹 개발자 2008 Express 및 SQLSERVER 2008 R2

+0

데이터베이스에 이미 다른 저장 프로 시저가 두 개 있습니다. –

+0

Button_Click 이벤트에서 SqlConnection을 사용하면 잔인한 코드가 발생합니다. 이 부분을 읽고 적어도 3 개의 레이어를 구현하십시오. Presentation, BusinessLayer 및 DataLayer .......... http://msdn.microsoft.com/en-us/library/Ee817644(pandp.10).aspx – granadaCoder

답변

0

당신은 모두 같은 휴식을 떠나 ... 그냥하는 SqlCommand cmd를 선언에서이 코드를 추가 ... 이런 식으로 시도 할 수 ...

을 사용하고 있습니다
SqlCommand cmd = new SqlCommand(); 
if(chboxReverse.Cheked==true) 
cmd.CommandText="NameofStoreProcedure2"; 
else 
cmd.CommandText="NameofStoreProcedure2"; 
cmd.Connection=con;