[英]C# DataRow not Being Added to DataTable
我创建了一个数据表,当我尝试向其中添加一行时,它不需要。 我知道 DataRow 中有信息,但是在 foreach 循环完成后,我查看了 DataTable 的计数,它显示为 0。这是我正在使用的代码:
DataSet CustomColumnsDS = new DataSet();
DataTable dt = new DataTable();
string strXML = GetCatalog(WebUserID, Password); //Web Service Call
XmlDocument doc = new XmlDocument();doc.LoadXml(strXML);
XmlNodeList xnList = doc.SelectNodes("xml/Catalog/item/Package");
if (xnList.Count > 0)//Count = 90
{
dt.Columns.Add("testId", typeof(string));
dt.Columns.Add("testName", typeof(string));
foreach (XmlNode xn in xnList)
{
if (!string.IsNullOrEmpty(xn["Id"].InnerText))
{
DataRow dr = dt.NewRow();
dr["testId"] = xn["Id"].InnerText;
dr["testName"] = xn["Name"].InnerText;
try
{
//At this point the DataRow is filled in with values, but it does not seem to actually add in.
dt.Rows.Add(dr); //No Exception is caught
}
catch (Exception ex)
{
string test = "";
}
}
}
CustomColumnsDS.Tables.Add(dt);//Count = 0;
}
任何帮助表示赞赏。 谢谢!
我使用以下示例 xml(代替 Web 服务调用)运行了您的代码:
string strXML =
@"
<xml>
<Catalog>
<item>
<Package>
<Id>1</Id>
<Name>a</Name>
</Package>
<Package>
<Id>2</Id>
<Name>b</Name>
</Package>
</item>
<item>
<Package>
<Id>3</Id>
<Name>c</Name>
</Package>
<Package>
<Id>4</Id>
<Name>d</Name>
</Package>
</item>
</Catalog>
</xml>
";
出于调试目的,我将以下代码附加到末尾:
Console.WriteLine(CustomColumnsDS.Tables[0].Rows.Count);
输出为4
,这是正确的。 同时查看调试器中的DataTable
行显示数据在那里。
您应该尝试不分配列类型,因为我们不知道 xml 元素的类型,只需尝试: dt.Columns.Add("testId"); dt.Columns.Add("testName"); 直到尝试 cacth... 你确定你为每个数据行获得正确的数据吗? (运行调试直到这一行查看值:dr["testName"] = xn["Name"].InnerText;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.