2016-09-21 9 views
1

DataTableを作成しましたが、それに行を追加しようとするとデータセットが取得されません。すべてのヘルプは高く評価されDataTableにC#DataRowが追加されていません

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; 
} 

:私はのDataRow内の情報があることを知っているが、foreachループが終了した後、私はDataTableの者の数を見て、それが0を示してこれは私が使用しているコードがあります。ありがとう!

+0

は** dt.Rows.Add(dr); **スローされ、例外が捕捉されて飲み込まれますか? – LittleDebugger

+0

InsertAt(カウンタ変数付き)を試してみることができます dt.Rows.InsertAt(dr、rowCounter); – Paulj

+0

そこにコメントを忘れて、例外は捕まえられません。それは私がデバッグしていたときのものでした。 – Vandel212

答えて

0

xml要素の型がわからないため、列の型を割り当てずに試してみる必要があります。 dt.Columns.Add( "testId"); dt.Columns.Add( "testName"); お試しください...すべてのデータローに対して正確なデータを取得してもよろしいですか? (この行までデバッグを実行して値を確認してください: dr ["testName"] = xn ["Name"] InnerText;

+0

私はforeachループの最後にブレークを投げたので、一度だけ実行されますが、何もカウントに追加されません。 – Vandel212

+0

私もデバッグを実行し、元のコードで正しい結果を確認します。この行にブレークポイントを置くと、結果を確認する必要があります。CustomColumnsDS.Tables.Add(dt);クイックウォッチ:この値の結果:CustomColumDS.Tables.List.Rows。[0] .Rows.Count。この値はあなたのカウントです。 –

1

次のサンプルxmlでコードを実行しました)は:また、デバッガでDataTable行を表示

Console.WriteLine(CustomColumnsDS.Tables[0].Rows.Count); 

、出力が正しい4たデータであることを明らかにした:。

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>     
    "; 

Iは、デバッグ目的のために最後まで次のコードを添付しましたそこに。

関連する問題