我正在用c#开发Windows应用程序。
我有一个gridview,里面有大约4万条记录。
在那个gridview中我有复选框。
我只想更新那些经过检查的记录。
我为它编写了以下代码>>
for (int i = 0; i < gvTradeFile.Rows.Count; i++)
{
try
{
DataGridViewCell cell = gvTradeFile.Rows[i].Cells[0];
bool check = (bool)cell.Value;
if (check)
{
try
{
con.Open();
cmd = new SqlCommand("update tradeFile set Party_Code='" + txtTransferPartyCode.Text + "' where Party_Code='" + gvTradeFile.Rows[i].Cells[1].Value.ToString() + "' and TradeNo='" + gvTradeFile.Rows[i].Cells[6].Value.ToString() + "' and Sauda_Date='" + gvTradeFile.Rows[i].Cells[13].Value.ToString() + "' and OrderNo='" + gvTradeFile.Rows[i].Cells[14].Value.ToString() + "'", con);
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
}
catch (Exception ex)
{
}
}
在此,如果我们查看for loop
我正在处理网格中的每一行。
是否有任何特定的技术可以直接获取for循环中的Checked行[通过网格中的复选框]?
上面的代码工作正常,但由于每一行都被检查,exe正在被绞死。
请帮帮我。
答案 0 :(得分:1)
我不太确定,但我认为你无法获得任何返回已检查行的gridview函数。
但是,可以手动执行此操作,方法是保持记录选中gridview复选框的哪一行。然后根据您维护的列表更新数据库。
答案 1 :(得分:1)
我认为在复选框chek事件中,如果选中复选框,则应该维护数据表或字典,然后批量更新数据库。您可以谷歌进行批量更新
答案 2 :(得分:1)
我可以想到2个选项。
您可以将保存添加到新主题,然后让您的同事/客户认为已保存或显示“保存”图形。
一次将整个事物拆分为1000条记录。这样,你只显示第一个1k,编辑,保存。然后显示下一个1k,编辑,保存!这将减少开销。