1

我在 C# 中有一个 datagridview,用于从 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);
4

2 回答 2

0

您可以抓取更改之前的 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() 返回的日志。这些将是所做的更改。

于 2015-10-29T13:45:51.023 回答
0

我得到了它:

dg.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;
        dg.SelectAll();

        Clipboard.SetDataObject(dg.GetClipboardContent());
        File.WriteAllText(@"path.txt", Clipboard.GetText(TextDataFormat.Text));
于 2015-10-29T15:09:59.350 回答