【问题标题】:Update should not be done when the checkbox is disabled禁用复选框时不应进行更新
【发布时间】:2015-05-19 07:34:58
【问题描述】:

我有两个页面,一个是管理页面,另一个是教师页面。管理员根据教师分配主题。教师只想选择所需的时间。我的问题是我不想对禁用的复选框执行更新查询。我已经尝试了下面的代码,但它也在更新禁用复选框。

  using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings
    ["ConnectionString"].ConnectionString))
    {
    foreach (GridViewRow r in Gv1.Rows){
     if  ((((
     (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour1"))).Checked == true 
|| ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour1"))).Checked == false)
|| (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour2"))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour2"))).Checked == false)
|| (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour3"))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour3"))).Checked == false)
|| (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour4"))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour4"))).Checked == false)
|| (((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour5"))).Checked == true || ((CheckBox)(Gv1.Rows[r.RowIndex].FindControl("chkHour5"))).Checked == false)
    ))))
    {
      SqlCommand comm;
      CheckBox aa;
      bool hour1 = (r.FindControl("chkHour1") as CheckBox).Checked;
      bool hour2 = (r.FindControl("chkHour2") as CheckBox).Checked;
      bool hour3 = (r.FindControl("chkHour3") as CheckBox).Checked;
      bool hour4 = (r.FindControl("chkHour4") as CheckBox).Checked;
      bool hour5 = (r.FindControl("chkHour5") as CheckBox).Checked;
      string subject1 = ddlsubj.SelectedValue;
      string subject2 = ddlsubj.SelectedValue;
      string subject3 = ddlsubj.SelectedValue;
      string subject4 = ddlsubj.SelectedValue;
      string subject5 = ddlsubj.SelectedValue;
      string datedif = r.Cells[0].Text;
      aa=(CheckBox)sender;
      con2.Open();
      comm = new SqlCommand();
      comm.Connection = con2;
      comm.CommandType = CommandType.Text;
      if (aa.Enabled==false)
      {
       comm = new SqlCommand("UPDATE test 
                              SET aa=false 
                              when subject1=CASE WHEN (@hour1)= 'false' THEN NULL
                              ELSE @subject1 END,
                              subject2=CASE WHEN (@hour2)= 'false' THEN NULL 
                             ELSE @subject2 END,
                             subject3=CASE WHEN (@hour3)= 'false' THEN NULL 
                             ELSE @subject3 END,
                             subject4=CASE WHEN (@hour4)= 'false' THEN NULL 
                             ELSE @subject4 END,
                             subject5=CASE WHEN (@hour5)='false' THEN NULL 
                             ELSE @subject5 END,
                             hour1 = CASE WHEN (@hour1)= 'false' THEN 'false' 
                             ELSE 'true' END, 
                             hour2 = CASE WHEN (@hour2)= 'false' THEN 'false' 
                             ELSE 'true' END, 
                             hour3 = CASE WHEN (@hour3)= 'false' THEN 'false' 
                             ELSE 'true' END , 
                             hour4 = CASE WHEN (@hour4)= 'false' THEN 'false' 
                             ELSE 'true' END , 
                             hour5 = CASE WHEN (@hour5)= 'false' THEN 'false' 
                            ELSE 'true' END  where datedif=@datedif", con2);
     }
       else
       {
                   comm = new SqlCommand("update test set aa=true 
                           when subject1=CASE WHEN (@hour1)= 'false' THEN NULL 
                           ELSE @subject1 END,
                           subject2=CASE WHEN (@hour2)= 'false' THEN NULL 
                           ELSE @subject2 END,
                           subject3=CASE WHEN (@hour3)= 'false' THEN NULL 
                           ELSE @subject3 END,
                           subject4=CASE WHEN (@hour4)= 'false' THEN NULL 
                           ELSE @subject4 END,
                           subject5=CASE WHEN (@hour5)='false' THEN NULL 
                           ELSE @subject5 END,
                           hour1 = CASE WHEN (@hour1)= 'false' THEN 'false' 
                           ELSE 'true' END, 
                           hour2 = CASE WHEN (@hour2)= 'false' THEN 'false' 
                           ELSE 'true' END, 
                           hour3 = CASE WHEN (@hour3)= 'false' THEN 'false' 
                           ELSE 'true' END , 
                           hour4 = CASE WHEN (@hour4)= 'false' THEN 'false' 
                           ELSE 'true' END , 
                           hour5 = CASE WHEN (@hour5)= 'false' THEN 'false' 
                            ELSE 'true' END  where datedif=@datedif", con2);
    }
    comm.Parameters.AddWithValue("@subject1",subject1);
    comm.Parameters.AddWithValue("@subject2", subject2);
    comm.Parameters.AddWithValue("@subject3", subject3);
    comm.Parameters.AddWithValue("@subject4", subject4);
    comm.Parameters.AddWithValue("@subject5", subject5);
    comm.Parameters.AddWithValue("@hour1", hour1);
    comm.Parameters.AddWithValue("@datedif", datedif);
    comm.Parameters.AddWithValue("@hour2", hour2);
    comm.Parameters.AddWithValue("@hour3", hour3);
    comm.Parameters.AddWithValue("@hour4", hour4);
    comm.Parameters.AddWithValue("@hour5", hour5);
    comm.ExecuteNonQuery();
    con2.Close();
       }
      } 
     }

【问题讨论】:

  • 您的 If 条件似乎令人困惑,似乎适用于任何情况。
  • 发送者对象的来源
  • 我是 asp.net 的新手,我试过这些只为启用的复选框进行更新,你能提出一些想法吗
  • ...并且,您应该考虑在开头删除巨大的 IF 语句。它正在检查所有复选框是真还是假(它们总是如此),这完全消除了它的全部目的,因为该语句将始终为真!
  • 是什么邪恶的头脑编造了这个代码?这太长而且太混乱了,我建议将其简化并重构为多种方法,这将使您的调试任务变得更加容易。是否还有一个原因是您手动构建 SQL,而不是使用像实体框架这样的存储过程/ORM?

标签: c# sql asp.net


【解决方案1】:

您需要先删除 IF 语句,因为它不需要。正如其他人所说,它正在检查真或(||)假,它将永远为真。

其次,看不到您检查 .Enabled == False 的任何地方 这可能是您正在寻找的。​​p>

【讨论】:

  • 如何只为启用的复选框而不是禁用的复选框进行更新
【解决方案2】:

根据您的代码,如果禁用复选框,则执行一个查询,如果启用复选框,则执行另一个查询

if (aa.Enabled==false)
{

}
else{

}

如果您不想在禁用的复选框上执行,请删除下面的部分

if (aa.Enabled==false)
{

}

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 2010-09-16
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多