2015-05-19 13 views
6

Mam dwie strony, jedna to administrator, a druga to wydział. Administrator przydziela przedmiot podmiotowi. Wydział tylko chce wybrać tam tylko wymagane godziny. Mój problem polega na tym, że nie chcę wykonywać kwerendy aktualizacji dla wyłączonych pole wyboru. Próbowałem poniższy kod, ale jest również aktualizacja dla wyłączone pole wyboru.Aktualizacja nie powinna być wykonana, gdy pole wyboru jest wyłączone

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 [email protected]", 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 [email protected]", 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(); 
     } 
     } 
    } 
+1

Twój warunek Jeśli wydaje się być mylący i wydaje się spełniać dla każdego scenariusza. – Amit

+0

skąd nadchodzi obiekt nadawcy – Sachu

+0

** Jestem nowy w asp.net, próbowałem zrobić aktualizację tylko dla włączonego pola wyboru, możesz zasugerować jakiś pomysł ** –

Odpowiedz

1

Najpierw należy usunąć instrukcję IF, ponieważ jest niepotrzebna. Sprawdza, jak powiedzieli inni, zarówno dla prawdziwego OR (||) false, jak i zawsze będzie to prawda.

Po drugie, nie widzisz nigdzie miejsca, w którym zaznaczono. Obrócono == Fałsz Może to być spowodowane tym, czego szukasz.

+0

** w jaki sposób można wykonać tę aktualizację tylko dla włączonego pola wyboru, a nie dla wyłączonego pola wyboru ** –

1

Według kodu, jeśli pole jest wyłączona wykonać jedną kwerendę i jeśli włączona pole wykonać kolejne zapytanie

if (aa.Enabled==false) 
{ 

} 
else{ 

} 

jeśli nie chcesz, aby wykonać na niepełnosprawne poniżej pól wyboru usunięcia części

if (aa.Enabled==false) 
{ 

} 
+0

, to nie działa –

Powiązane problemy