我正在使用XML解析器和Oracle从数据库中获取数据。当我在gridview中显示它时,它只显示最后一个值而不是3个值。我正在使用:
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 :(得分:3)
您需要为每个新行调用dt.NewRow()
,而不是仅在循环上方调用一次。否则,您只需分配一行,然后重复更改数据。
编辑:不要在循环内添加列。这将重置DataTable。在循环外添加列,但在循环内添加新行。