0

我正在尝试在数据网格中显示这些 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 循环将值放入列表中。这是完美的工作。然后将数据放入数据集,然后绑定到数据网格。唯一的问题是它只显示从查询中读取的最后一行的数据。如何让它显示数据网格中查询的所有行?任何帮助,将不胜感激。先谢谢了。

4

1 回答 1

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) 的名称和字符串列表 (s1) 作为参数传递在代码中,您定义了要显示的列标题的名称(我已经写了描述)。

在您的情况下,S1=datalist。如果 datalist 包含例如 3 个元素,则该方法将遍历这些元素并生成 3 行...

于 2013-03-19T14:27:02.637 回答