我试图在数据网格中显示这些xml字符串。我对数据集知之甚少,但似乎没有保留先前输入的数据。这是我的代码。
C#:
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string rdr = reader[i].ToString();
dataList.Add(rdr);
string column = reader.GetName(i);
const string xmlAttributeFormat = "{0} = \"{1}\" ";
xmlString = xmlString + String.Format(xmlAttributeFormat, column, dataList[i]);
}
string FinalXMLString = "<row " + xmlString + " />";
StringReader streamreader = new System.IO.StringReader(FinalXMLString);
XmlTextReader xmlreader = new System.Xml.XmlTextReader(streamreader);
dataSet = new System.Data.DataSet();
dataSet.ReadXml(xmlreader);
xmlString = "";
dataList.Clear();
FinalXMLString = "";
}
我有一个遍历查询的while循环,然后是for循环将值放入列表中。这很完美。然后将数据放入数据集中,然后将数据绑定到数据网格。唯一的问题是它只显示从查询中读取的最后一行的数据。如何让它显示datagrid中查询的所有行?任何帮助,将不胜感激。谢谢你提前。
答案 0 :(得分:0)
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string rdr = reader[i].ToString();
dataList.Add(rdr);
string column = reader.GetName(i);
}
}
Display_Grid(myGrid,dataList)
public static void Display_Grid(DataGrid d, List<string> S1)
{
ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
DataColumn cl = new DataColumn(column, typeof(string));
cl.MaxLength = 200;
dt.Columns.Add(cl);
int i = 0;
foreach (string s in S1)
{
DataRow rw = dt.NewRow();
rw["Description"] = S1[i];
i++;
}
d.ItemsSource = ds.Tables[0].AsDataView();
}
您将数据网格(d)的名称和字符串List(s1)作为参数广告传递给您定义要显示的columhn标头名称的代码(我已经写了描述)。
在你的情况下,S1 = datalist。 如果datalist包含3个元素,那么该方法将遍历这些元素并产生3行...