当我向 DataGridView 添加新行时,该行不会保存到 DataView 或 DataTable。但是当我在那之后添加另一行时,该行被添加了。第一个新行被完全忽略。我不知道为什么。请帮忙。
private string _filePath;
private DataTable _dataTable;
private DataView _defaultView;
public StringRecords(string fileName)
{
InitializeComponent();
_dataTable = FileManager.Populate(filePath);
_dataTable.TableName = filePath;
_defaultView = new DataView(_dataTable);
dataGridRecords.DataSource = _defaultView;
}
private void dataGridRecords_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
FileManager.SaveDataTableToCsv(_dataTable, filePath);
}
public static void SaveDataTableToCsv(DataTable source, string fileName)
{
using (var stream = new StreamWriter(fileName, false))
{
var config = new CsvConfiguration { Delimiter = "|", HasHeaderRecord = false };
using (var writer = new CsvWriter(stream, config))
{
var records = ToStringRecordList(source);
writer.WriteRecords(records);
}
}
}
添加第一个新行仅生成此调试输出:
Loaded 'Anonymously Hosted DynamicMethods Assembly'.
我已经转储了 DataTable 和 DataView 对象。第一个新行不会添加到任一对象。
我究竟做错了什么?或者我怎样才能知道第一行发生了什么?