c# - 如何将数据添加到 C# DataTable

标签 c# import datatable datarow

我认为这会相当容易,但我现在...我试图简单地向现有 DataTable 添加一个新行,但该表不会占用我的行...

Debug.Print("My Achv Count Before: {0}", Manager.achievementsMine.Rows.Count);
DataRow newRow = Manager.achievementsMine.NewRow();
newRow.SetField<int>("CT_Q", count);
newRow.SetField<DateTime>("CMPL_D", DateTime.Now);
newRow.SetField<string>("USER_LAN_I", Manager.userID);
newRow.SetField<string>("ACHV_I", ACHV_I);
Manager.achievementsMine.ImportRow(newRow);
Manager.achievementsMine.AcceptChanges();
Debug.Print("My Achv Count After: {0}", Manager.achievementsMine.Rows.Count);

“Debug.Print”之前/之后的两行都显示计数为 44。为什么“之后”调试不告诉我 45,因为我刚刚导入了一个新行并告诉 DataTable 接受更改?

编辑: 我尝试重写一些 newRow 部分但没有改变:

Debug.Print("My Achv Count Before: {0}", Manager.achievementsMine.Rows.Count);
DataRow newRow = Manager.achievementsMine.NewRow();
newRow["CT_Q"] = count;
newRow["CMPL_D"] = DateTime.Now;
newRow["USER_LAN_I"] = Manager.userID;
newRow["ACHV_I"] = ACHV_I;
Manager.achievementsMine.ImportRow(newRow);
Manager.achievementsMine.AcceptChanges();
Debug.Print("My Achv Count After: {0}", Manager.achievementsMine.Rows.Count);

最佳答案

如果你想使用NewRow,你必须稍后Add DataRow到表中:

DataRow newRow = Manager.achievementsMine.NewRow();
newRow.SetField<int>("CT_Q", count);
newRow.SetField<DateTime>("CMPL_D", DateTime.Now);
newRow.SetField<string>("USER_LAN_I", Manager.userID);
newRow.SetField<string>("ACHV_I", ACHV_I);
Manager.achievementsMine.Rows.Add(newRow);

另一种方法是使用 DataRowColection.Add:

DataRow newRow = Manager.achievementsMine.Rows.Add();
// you don't need to add this row since it's already added.

注意:不要调用AcceptChanges如果您想稍后将新行插入数据库。 AcceptChanges 会将其 RowState 更改为未更改,因此 DataAdapter 无法检测到该行是新行。 DataAdapter 本身将在 Update 结束时调用它。

关于c# - 如何将数据添加到 C# DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19793288/

相关文章:

linux - 如何将完整数据库导入 Linux 并查看导入进度?

c# - DataTable 中的分组数据

css - primefaces 数据表宽度渲染不好

c# - 匹配行尾或其他字符

c# - AWS dll 供 c# 项目引用

java - 如何防止 Maven Java 中的文件从特定包导入

c# - 动态移动表格单元格(向上/向下)-javascript

c# - MVC2 C# TextAreaFor 包含 ', ,'

c# - 如何集中监控发送到应用程序或 winform 的消息

java - 如何在android studio中导入zebra包?