2015-05-19 8 views
6

Ho due pagine, una è admin e un'altra è facoltà. L'amministratore assegna soggetti a facoltà. I docenti desiderano selezionare solo le ore richieste. Il mio problema è che non voglio eseguire la query di aggiornamento per disabilitato. Ho provato il codice qui sotto, ma sta aggiornando anche per la casella di controllo disabilitato.L'aggiornamento non dovrebbe essere eseguito quando la casella di controllo è disabilitata

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

La tua condizione Se sembra essere confusa e sembra incontrarsi per qualsiasi scenario. – Amit

+0

da dove sta arrivando l'oggetto mittente – Sachu

+0

** Sono nuovo per asp.net ho provato a fare questa opzione per solo la casella di controllo abilitata puoi suggerire qualche idea ** –

risposta

1

Si consiglia di rimuovere prima l'istruzione IF poiché non è necessaria. Sta controllando, come altri hanno detto, sia per vero OR (||) falso che sarà sempre vero.

In secondo luogo, non si vede da nessuna parte dove si verifica. Abilitato == Falso Questo potrebbe essere per quello che stai cercando.

+0

** come è possibile effettuare tale aggiornamento solo per casella di controllo abilitata e non per disattivato ** –

1

Secondo il codice, se la casella di controllo è disattivata si esegue una query e se la casella di controllo ha permesso di eseguire un'altra query

if (aa.Enabled==false) 
{ 

} 
else{ 

} 

se non si desidera eseguire sulla disabilità caselle di controllo Rimuovi sotto parte

if (aa.Enabled==false) 
{ 

} 
+0

no non funziona –

Problemi correlati