0

こんにちは皆さん、INSERT INTO と SELECT を行うこれらの SqlCommand を取得しました。prikaz2 (INSERT INTO) 条件に追加する必要があります。CHECKBOX によって選択されたこれらの行のみを INSERT INTO します。

私はこれについて静かに長い間疑問に思っていましたが、私のコードのどれもそれを行うことができませんでした.

何か提案してくれませんか?私の意見では、「WHERE」を追加する必要がありますか?

  SqlCommand comm = new SqlCommand("Select MAX (ID_K) FROM klient", spojeni);
            spojeni.Open();
            int max = (int)comm.ExecuteScalar();
            spojeni.Close();

            for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
            {
                SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni); // here I need to add condition to INSERT INTO only selected rows
                prikaz2.Parameters.AddWithValue("@val1", dtg_ksluzby.Rows[i].Cells["text"].Value);
                prikaz2.Parameters.AddWithValue("@val2", dtg_ksluzby.Rows[i].Cells["pocet"].Value);
                prikaz2.Parameters.AddWithValue("@val3", dtg_ksluzby.Rows[i].Cells["akce"].Value);
                prikaz2.Parameters.AddWithValue("@val4", max + 1);                     spojeni.Open();
                prikaz2.ExecuteNonQuery();
                spojeni.Close();
  } 
     private void dtg_ksluzby_CellValueChanged(object sender,
                                   DataGridViewCellEventArgs e)

これはrow.eを選択するための私のコードです

     foreach (DataGridViewRow row in dtg_ksluzby.Rows)
     {

         DataGridViewCheckBoxCell chk1 = row.Cells[3] as DataGridViewCheckBoxCell;
         if (Convert.ToBoolean(chk1.Value) == true)
         {

             MessageBox.Show("Služba byla vybrána");
         }
         else
         {
         }
     }
4

2 に答える 2

2

したがって、for ループを dtg_ksluzby.Rows を反復処理する ForEach に置き換え、チェックを実行して、ループ内でチェックされているかどうかを確認します。

foreach (DataGridViewRow row in dtg_ksluzby.Rows)
        {
            if (Convert.ToBoolean(row.Cells[3].Value) == true) // check this line here
            {
                SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni); 
                prikaz2.Parameters.AddWithValue("@val1", row.Cells["text"].Value);
                prikaz2.Parameters.AddWithValue("@val2", row.Cells["pocet"].Value);
                prikaz2.Parameters.AddWithValue("@val3", row.Cells["akce"].Value);
                prikaz2.Parameters.AddWithValue("@val4", max + 1);                     
                spojeni.Open();
                prikaz2.ExecuteNonQuery();
                spojeni.Close();
            }
        }
于 2013-07-17T14:02:36.457 に答える