如何仅更新dataGridview中的数据

时间:2014-07-01 14:14:02

标签: c# datagridview

我的应用程序将包含标题列名称的excel文件中的工作表导入到新的dataGridView表中。为了方便起见,我们可以说列名是;姓名,城市,州,州。我把前两个条目“硬编码”为Jack,Detroit,MI,Missing;和迈克,芝加哥,伊利诺伊州,失踪。接下来,我导入一个添加更多条目的XML文件。我有代码查找原始的2个条目,如果找到,我希望它“更新”或“重新编辑”Missing to Found。 (我希望这只发生在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);

1 个答案:

答案 0 :(得分:0)

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";
}