c#使用以前的数据表列值

时间:2017-06-01 08:57:07

标签: c# datatable

在我的项目中。我有一个数据表和一个名为' Process'

的按钮

点击“处理”后,按钮,我的数据表列更改为新值(如下面我编码)

是否有可能将这些更改的值恢复(在我点击按钮之前),因为我需要将它们与新值一起显示(当我点击按钮时)

这是我到目前为止编码的内容:

pip install Flask

2 个答案:

答案 0 :(得分:0)

如果在更改之前复制数据表,则应该可以执行此操作。

var dataCopy = my_datatable.Copy();

您唯一需要做的就是跟踪您所更改的行中的哪些字段。

考虑到这一点,可能有一个更好的解决方案使用下面的一些。我不记得没有研究的具体细节,但它们可能有用。

 if (row.RowState == DataRowState.Modified)
 {
      var currentRow = row[0, DataRowVersion.Current];
      var previousRow = row[0, DataRowVersion.Proposed];
 }

然后您可以使用它来获取两个值

或者还有

 var modifiedTable = my_datatable.GetChanges(DataRowState.Modified)

再次问好......我做了一些实验,我相信下面会做你需要的。它基于我创建的简单数据表来演示。

            var data = new DataTable("Table1");
            data.Columns.Add(new DataColumn("Username", typeof(string)));
            data.Columns.Add(new DataColumn("UserId", typeof(int)));

            var row = data.NewRow();
            row["Username"] = "User1";
            row["Userid"] = 12356;
            data.Rows.Add(row);

            data.AcceptChanges();

            var originalTable = data.Copy();

            var rowToEdit = data.Rows[0];
            rowToEdit["Username"] = "User2";

            var rowPos = 0;

            foreach (DataRow dr in data.Rows)
            {
                if (dr.RowState == DataRowState.Modified)
                {
                    foreach (DataColumn c in dr.Table.Columns)
                    {
                        if (dr.ItemArray[c.Ordinal] != originalTable.Rows[rowPos].ItemArray[c.Ordinal] )
                        {
                            //Show Changed value
                            var x = originalTable.Rows[rowPos].ItemArray[c.Ordinal];
                        }
                    }
                }

                rowPos++;
            }

由于

答案 1 :(得分:0)

var dictionary = new Dictionary<int, string>();
for (int l = 0; l < my_datatable.Rows.Count; l++)
{
    data_source = my_datatable.Rows[l][3].ToString();
    dictionary.Add(l, data_source);

    // ...
}
// Access:
dictionary[0] // Returns the previous string

我会选择使用Dictionary<TKey, TValue>根据DataTable中的行索引存储字符串。通过使用Dictionary<TKey, TValue>.Add(key, value)方法,它将其存储以供以后使用。

从中访问字符串值时,您可以将其视为关联数组,并使用Dictionary<TKey, TValue>[index]

希望这有帮助!