我在C#中有一个数据网格视图,用于从SQL数据库中读取数据。我设置了它,这样当缺少条件时,用户可以更新数据网格,然后更新我的SQL数据库。然而,我希望/需要生成一个日志文件,并将数据网格中更改的列或字段导出到本地机器。当cellvaluechanged=true时,可以在数据网格上添加一个事件处理程序;运行导出?感谢您的帮助,谢谢!
(没有代码可供提供,不确定如何处理这种类型的方法(对C#来说仍然有点绿色))。
sqldataAdapter da;
sqlCommandBuilder scb;
DataTable dt;
SQLConnection con = (my connection);
private void btnEnter_Click(object sender, EventArgs e)
{
try
{
//Searches database for what is plugged into txtbox.
da = new SqlDataAdapter("SELECT * FROM [sqltable] WHERE [columnA]='" + txtData.Text + "' OR [ColumnB]='" + txtData.Text + "' OR [ColumnC]='" + txtData.Text + "' OR [ColumnD]='" + txtData.Text + "'", con);
ds = new DataSet();
dt = new DataTable();
ds.Clear();
da.Fill(dt);
dg.DataSource = dt;
con.Open();
con.Close();
private void btnUpdate_Click(object sender, EventArgs e)
{
//when button is clicked, the SQL Database gets updated with the data that is plugged into the datagridview.
scb = new SqlCommandBuilder(da);
da.Update(dt);
您可以在进行更改之前获取的DataTable,以及在进行新更改之后获取的DataTable,然后执行此操作。
A.Merge(B); // this will add to A any records that are in B but not A
return A.GetChanges(); // returns records originally only in B
然后遍历并将值写入a.Getchanges()返回的日志中。这些将是所做的改变。
我得到了:
dg.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;
dg.SelectAll();
Clipboard.SetDataObject(dg.GetClipboardContent());
File.WriteAllText(@"path.txt", Clipboard.GetText(TextDataFormat.Text));