2013-05-07 71 views
0

我有一个更新SQL表格的web表单。表格按预期运行。我遇到了一些新用户输入错误的问题(用户犯了错误!)我需要让用户能够反转输入。我想要做的只是把一个复选框放在窗体上。当用户点击应用按钮时,系统将运行一个存储过程,将信息输入到表中或从表中删除信息。我想要做的是使用case语句 - 如果chboxReverse.True,运行存储过程2,否则运行存储过程1.我也想在存储过程完成后将值重置为false。.cs.aspx中的ASP case语句

这里是CS文件信息:

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(); 

我想这样做的是保持它的所有相同的只是改变基于该复选框值的存储过程的名称。

这可能吗?

我使用的Visual Web Developer 2008 Express和SQLSERVER 2008 R2

+0

你有两个不同的存储过程已经在数据库中 – 2013-05-07 15:22:26

+0

在Button_Click事件中有一个SqlConnection是残酷的代码。请阅读此内容,并请实施至少3层。演示文稿,BusinessLayer和DataLayer .......... http://msdn.microsoft.com/en-us/library/Ee817644(pandp.10).aspx – granadaCoder 2013-05-07 16:34:21

回答

0

你可以尝试这样的...只是从宣布的SqlCommand CMD添加以下代码......离开休息都一样......

SqlCommand cmd = new SqlCommand(); 
if(chboxReverse.Cheked==true) 
cmd.CommandText="NameofStoreProcedure2"; 
else 
cmd.CommandText="NameofStoreProcedure2"; 
cmd.Connection=con;