1

我想知道当值在数据库中时如何检查 dtg_ksluzby 列 [3] 中的复选框。

klisluz(我从中获取数据的表)包含列、id、子键(即 = vyberradek)、文本、pocet 这是用于插入数据库的代码。

  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();
                }
            }

现在我想在将项目插入数据库时​​选中复选框。有人能给我一个线索吗?

我想我可以对这个问题进行算法,但我不知道如何将它变成我认为我可以这样做的代码:

 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 
 }

我想用这个让 USER 知道他在编辑之前选择了哪些列 提前非常感谢。

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 回答