如何仅更新dataGridview中的数据

本文关键字:数据 dataGridview 何仅 更新 | 更新日期: 2023-09-27 18:11:03

我的应用程序从一个excel文件中导入了一个只有标题列名称的工作表到一个新的dataGridView表中。为了简单起见,我们设列名为;名称、城市、州、状态。我将前两个条目"硬编码"为Jack, Detroit, MI, Missing;和迈克,芝加哥,伊利诺伊州,失踪。接下来导入一个添加更多条目的XML文件。我有代码寻找原来的2个条目,如果发现,我希望它"更新"或"重新编辑"失踪的发现。(我希望这只发生在dataGridView表。我找到的sql示例都旨在更新原始数据库。我希望它只更新dataGridView表

这段代码是用来更新excel文件的。

sql = "UPDATE " + myNameRange + " SET " + mySET + "' WHERE " + myWHERE + "'";

是否有一种方法,我可以做这样的事情,只改变数据在dataGridView?

从excel中导入工作表的方法

public static void loadData(string SheetName, DataGridView MyDataGrid, string filePathMain)
{
    string pathCon = "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" + filePathMain + ";Extended Properties='"Excel 8.0; HDR=YES;IMEX=3;READONLY=FALSE'";";
    OleDbConnection conn = new OleDbConnection(pathCon);
    OleDbCommand cmd = new OleDbCommand("select * from [" + SheetName + "]", conn);
    conn.Open();
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmd);
    DataTable dt = new DataTable();
    myDataAdapter.Fill(dt);
    //MessageBox.Show( dt.Rows.Count.ToString());
    MyDataGrid.Tag = dt.Rows.Count.ToString();
    MyDataGrid.DataSource = dt;
    OleDbCommand updateCmd = new OleDbCommand("UPDATE [" + SheetName + "]");
    myDataAdapter.UpdateCommand = updateCmd;
    conn.Close();
}

这里我将数据硬编码到表中。这个作品。

DataTable dt = ((DataGridView)TC).DataSource as DataTable;

DataRow row0 = dt.NewRow();
row0["Name"] = "Jack";
row0["Status"] = "MISSING";
dt.Rows.Add(row0);
DataRow row1 = dt.NewRow();
row1["Name"] = "Mike";
row1["Status"] = "MISSING";
dt.Rows.Add(row1);

如何仅更新dataGridview中的数据

dgvThing.DataSource将为您提供绑定到DataGridView的数据,您可以在不修改原始数据源(即excel文件)的情况下对其进行微调。

编辑:在这种情况下,您将循环遍历行以找到您的人员并更新其状态,如下所示。

DataTable dt = ((DataGridView)TC).DataSource as DataTable;
foreach (DataRow row in dt.Rows)
{
    if (row["Name"].Equals("Jack"))
        row["Status"] = "Found";
}