在我的项目中。我有一个数据表和一个名为' Process'
的按钮点击“处理”后,按钮,我的数据表列更改为新值(如下面我编码)
是否有可能将这些更改的值恢复(在我点击按钮之前),因为我需要将它们与新值一起显示(当我点击按钮时)
这是我到目前为止编码的内容:
pip install Flask
答案 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]
。
希望这有帮助!