DataTable拒绝使用行填充
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTable拒绝使用行填充相关的知识,希望对你有一定的参考价值。
我似乎无法让我的System.Data.DataTable接受任何新的行。以下是使用的代码。
using System.Data;
using System.Windows.Forms;
namespace DataTableToDGVTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DataTable dataTable = new DataTable();
dataTable.Columns.Add("id", typeof(int));
dataTable.Columns.Add("name", typeof(string));
DataRow dataRow = dataTable.NewRow();
dataRow["id"] = "1";
dataRow["name"] = "Jesse";
dataTable.Rows.Add(dataRow);
//Tried this as well, still doesn't work
//dataTable.Rows.Add(1, "Jesse");
}
}
}
在调试时,我注意到DataTable.Rows.Count将从0增加到1,但是,DataTable.Rows.List仍然为null,如下图所示:
我在.NET Framework 4.6中运行了这个代码,并且只是在4.7.1中尝试过,两个结果都是相同的。
你正在检查对象的错误部分。你应该检查的是dataTable => rows => Results View => [0] => ItemArray
。请参阅下面的代码(更多扩展版本)以更好地演示。
static void Main(string[] args)
{
var dataTable = new DataTable();
dataTable.Columns.Add("id", typeof(int));
dataTable.Columns.Add("name", typeof(string));
var rowCount = dataTable.Rows.Count;
Console.WriteLine(rowCount);
var dataRow = dataTable.NewRow();
dataRow["id"] = "1";
dataRow["name"] = "Jesse";
dataTable.Rows.Add(dataRow);
var rowCountAfterAdding = dataTable.Rows.Count;
Console.WriteLine(rowCountAfterAdding);
foreach (DataRow row in dataTable.Rows)
{
foreach (var ia in row.ItemArray)
{
Console.WriteLine(ia);
}
}
}
根据文档的DataRowCollection类的List属性不可供您使用。看到这个qazxsw poi
您在调试器中看到List属性,因为DataRowCollection是从InternalDataCollectionBase继承的,并且在该类中,List属性受到保护。看到这个link
这就是为什么你得到错误而你不应该看List属性。那是错误的对象。
手表documentation显示什么?
你试过dataTable.Rows[0]
的例子吗?
MSDN's DataTable class
在您对空控制的评论之后再做一个快速评论。 private static void ShowTable(DataTable table) {
foreach (DataColumn col in table.Columns) {
Console.Write("{0,-14}", col.ColumnName);
}
Console.WriteLine();
foreach (DataRow row in table.Rows) {
foreach (DataColumn col in table.Columns) {
if (col.DataType.Equals(typeof(DateTime)))
Console.Write("{0,-14:d}", row[col]);
else if (col.DataType.Equals(typeof(Decimal)))
Console.Write("{0,-14:C}", row[col]);
else
Console.Write("{0,-14}", row[col]);
}
Console.WriteLine();
}
Console.WriteLine();
}
是一个局部变量。
以上是关于DataTable拒绝使用行填充的主要内容,如果未能解决你的问题,请参考以下文章
使用 VueJS 填充的 html 表销毁和重新渲染 DataTable