在数据网格中显示数据

时间:2013-03-19 14:23:42

标签: c# xml datagrid dataset

我试图在数据网格中显示这些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中查询的所有行?任何帮助,将不胜感激。谢谢你提前。

1 个答案:

答案 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行...