1

値がDBにあるときにdtg_ksluzbyの列[3]のチェックボックスをチェックする方法を知りたいです。

klisluz (データを取得するテーブル) には、列、id、サブキー (= vyberradek)、テキスト、pocet が含まれます。これは、db に挿入するためのコードです。

  foreach (DataGridViewRow row in dtg_ksluzby.Rows)
            {

                if (Convert.ToBoolean(row.Cells[3].Value) == true) 
                {
                    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();
                }
            }

アイテムがDBに挿入されたときにチェックボックスをオンにしたいと思います。誰かが私に手がかりを提案してくれませんか?

この問題をアルゴリズム化できると思いますが、次のようにできると思っていたコードに変換する方法がわかりません。

 SqlCommand novyprikaz3 = new SqlCommand("SELECT * FROM klient WHERE ID_K=" + vyberradek, spojeni); //vyberradek selects row ID
            spojeni.Open();
            SqlDataReader precti = novyprikaz.ExecuteReader();

            if (precti.Read())
            {
                If text in (row where ID_K=number which comes from vyberradek) is in dtg_ksluzby then check the checkbox in the same row 
 }

これを使用して、ユーザーが編集中に以前にどの列を選択したかを知りたいと思います。

4

2 に答える 2

2
 for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
        {
            var row = dtg_ksluzby.Rows[i];
            using(var novyprikaz2 = new SqlCommand("SELECT * FROM klient WHERE ID_K=" + vyberradek, spojeni))
            {
                spojeni.Open();
                SqlDataReader precti2 = novyprikaz2.ExecuteReader();
                if (precti2.HasRows)
                {
                    row.Cells[3].Value = true;
                }
            }
        }

vyberradek行の内容に応じて変更する必要があります。

于 2013-07-18T10:05:07.397 に答える
1

それを試して、以下のようcountに使用してくださいExecuteScalar

SqlCommand novyprikaz3 = new SqlCommand("SELECT count(1) FROM klient WHERE ID_K=" + vyberradek, spojeni); //vyberradek selects row ID
            spojeni.Open();
            Int32 cnt = (Int32) novyprikaz.ExecuteScalar();

cnt が 0 より大きい場合、アイテムは存在します。

于 2013-07-18T10:00:45.537 に答える