繁体   English   中英

C# DataRow 未添加到 DataTable

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM