如何仅更新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);
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";
}