如何从数据库中提取数据并进行更改,以便在数据等于“Y”时,您可以选中数据网格视图中的复选框。
我已经通过stackoverflow搜索了一个答案,但没有成功。任何帮助将不胜感激
代码的'**'部分是我遇到问题的地方。
到目前为止我的代码:
using(getConnection.sqlCmd = new SqlCommand(sqlQuery,getConnection.sqlcon))
{
using(var reader = getConnection.sqlCmd.ExecuteReader())
{
while (reader.Read())
{
col1 = reader.GetValue(0).ToString();
**foreach(DataGridView row in dgvAccident.Rows)
{
DataGridViewCheckBoxCell chk = dgvAccident.Rows[0].Cells[4] as DataGridViewCheckBoxCell;
if (col1.Equals('Y'))
chk.Selected = true;
else
chk.Selected = false;
}**
}
}
}
答案 0 :(得分:0)
使用Value
的{{1}}属性代替DataGridViewCell
Selected
但您的代码似乎已关闭。您将重新检查从DB返回的每一行的所有行复选框。您应该检查 foreach(DataGridView row in dgvAccident.Rows)
{
dgvAccident.Rows[0].Cells[4].Value = (col1.Equals('Y'));
}
行是否对应于从DB返回的行,然后检查值。
答案 1 :(得分:0)
经过大量的反复试验后,我终于想出了一个完美无缺的解决方案
using(getConnection.sqlCmd = new SqlCommand(sqlQuery,getConnection.sqlcon))
{
using(var reader = getConnection.sqlCmd.ExecuteReader())
{
int x = 0;
try
{
while (reader.Read())
{
col1 = reader.GetValue(0).ToString();
if (col1.Equals("Y"))
{
dgvAccident.Rows[x].Cells[4].Value = true;
++x;
}
else
if (col1.Equals("N"))
{
dgvAccident.Rows[x].Cells[4].Value = false;
++x;
}
}
}
请注意,我确实把它放在一个尝试并捕获,以确保如果程序运行索引越界我捕获错误,我强烈建议任何人使用此代码将其放在try catch中。