0

我正在用 C# 开发 Windows 应用程序。

我有一个 gridview,里面有大约 40k 条记录。

在那个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 loopi 正在处理网格中的每一行。

是否有任何特定技术可以让我在 for 循环中直接仅使用选中的行[通过网格中的复选框]?

上面的代码工作正常,但由于检查了每一行,exe 被挂起。

请帮我。

4

3 回答 3

1

我不太确定,但我认为您无法获得任何返回已检查行的 gridview 函数。

但是,您可以通过记录选中 gridview 复选框的哪一行来手动执行此操作。比根据您维护的列表更新您的数据库。

于 2013-03-22T12:28:34.087 回答
1

我认为在复选框 chek 事件中,如果选中复选框,您应该维护一个数据表或字典,然后批量更新数据库。你可以谷歌批量更新

于 2013-03-22T12:35:04.887 回答
1

我可以想到2个选项。

  1. 您可以将保存粘贴到新线程上,然后让您的同事/客户假设它已保存或显示“保存”图形。

  2. 一次将整个事物拆分为 1000 条记录。这样,您只显示前 1k,编辑,保存。然后显示下一个 1k,编辑,保存!这将减少开销。

于 2013-03-22T12:52:31.717 回答