【发布时间】:2019-02-28 05:41:31
【问题描述】:
我正在使用 c# windows 应用程序将记录从 sql server 填充到数据网格视图,每行中都有动态复选框工具。我想通过该特定行的复选框出于某种目的选择选定的行。直到现在我成功地实现了我的目标。但是我在保存检查状态时遇到了一个小问题,例如,我只想检查那些 Name = Max 我在该文本框中有一个文本框的记录,我用类似 Query 调用 text chnage 事件
按名称过滤的代码:
try
{
SqlCommand cmd = null;
SqlConnection con = null; Ranks rank = new Ranks();
con = new SqlConnection(cs.DBcon);
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = "Select * from Records where Name like @Name order by Pno";
cmd.Parameters.AddWithValue("@Name", "%" + FilterByNameTextbox.Text.Trim() + "%");
SqlDataAdapter adapter1 = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter1.Fill(dt);
dataGridView1.DataSource = dt;
Make_fields_Colorful();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
如果我在按名称过滤器文本框中编写 Max,它将返回 3 条记录,名称以 max 开头,使用类似查询,正如我上面提到的代码。所以我只使用动态复选框检查 3 条记录中的 2 条记录,直到现在我的代码运行完美。现在我想检查名称以 Ali 开头的记录,现在当我在我的过滤器中按名称文本框写 ali 时,它将返回名称为 ali 的行,但问题来了,它将删除我以前检查的记录,所以我将如何能够保存 max 和 ali 行的检查记录:
在每一行中添加动态复选框的代码
DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
checkBoxColumn.Name = "checkBoxColumn";
checkBoxColumn.DataPropertyName = "Report";
checkBoxColumn.HeaderText = "Report";
dataGridView1.Columns.Insert(10, checkBoxColumn);
dataGridView1.RowTemplate.Height = 100;
dataGridView1.Columns[10].Width = 50;
【问题讨论】:
-
这是您之前问题的复制+粘贴副本,甚至包含相同的拼写错误。