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です。データリストにたとえば3つの要素が含まれている場合、メソッドはそれらを反復処理して3つの行を生成します。

于 2013-03-19T14:27:02.637 に答える