2011-08-27 72 views
0

我正在使用XML解析器和Oracle一起從數據庫中獲取數據。當我在gridview中顯示它時,它只顯示最後一個值而不是3個值。我使用:c中的xmlparser#

doc.LoadXml(str); 
XPathNavigator nav = doc.CreateNavigator(); 
XPathNodeIterator iterator = nav.Select("//new[@*]"); 
drNewRow = dt.NewRow(); 

while (iterator.MoveNext()) 
{ 
    drNewRow = dt.NewRow(); 
    dt.Columns.Add("service"); 
    dt.Columns.Add("entity"); 
    dt.Columns.Add("updated"); 

    XPathNavigator nav2 = iterator.Current.Clone(); 
    XPathNavigator nav3 = iterator.Current.Clone(); 
    nav2.MoveToFirstAttribute(); 
    nav3.MoveToParent(); 

    // lt.Items.Add(nav3.Name + "" + nav2.Name + "" + nav2.va); 

    drNewRow["service"] = nav3.Name; 
    drNewRow["entity"] = nav2.Name; 
    drNewRow["updated"] = nav2.Value; 

    dt.Rows.Add(drNewRow); 
    dt.AcceptChanges(); 
} 
gw.DataSource = dt; 
gw.DataBind(); 
+0

看到我的答案更新。 – siride

回答

3

你需要調用dt.NewRow()每個新行,不只是一次循環以上。否則,你只是分配一行,然後你重複地改變數據。

編輯:不要添加循環內的列。這將重置DataTable。在循環外部添加列,但在循環內添加新行。

+0

沒有它不工作。我只在循環內添加dt.newrow()。但它只顯示一行。但如果我添加在列表框中,它會給出三個值。 – kawade

+0

@kawade:你能否更新你的問題以顯示新的代碼?你仍然可能做錯了,但沒有看到代碼我就無法知道。 – siride

+0

沒有它的不工作.. – kawade