Как отобразить данные XML в gridview ASP.Net? - PullRequest
2 голосов
/ 08 ноября 2011

Эксперты!Я очень плохо знаком с XML.Тем не менее, веб-приложение собирает данные в форме XML, и я должен отобразить их (и включить редактирование) в ASP.Net GridView.Мне нужна ваша помощь, пожалуйста.

<?xml version="1.0"?>
<Answers>
  <AnswerSet>
<Answer questionId="MRN">4444</Answer>
<Answer questionId="FName">test</Answer>
<Answer questionId="LName">patient</Answer>
<Answer questionId="AddressPt">blah blah</Answer>
<Answer questionId="Governorate">xxxx</Answer>
<Answer questionId="InitialCSF">Negative</Answer>
<Answer questionId="Diagnosis"></Answer>
<Answer questionId="Description">
</Answer>
  </AnswerSet>
  <AnswerSet>
<Answer questionId="MRN">1</Answer>
<Answer questionId="FName">1</Answer>
<Answer questionId="LName">1</Answer>
<Answer questionId="AddressPt">1</Answer>
<Answer questionId="InitialCSF">Positive</Answer>
<Answer questionId="Diagnosis">dx</Answer>
<Answer questionId="Description">
</Answer>
  </AnswerSet>
 </Answers>

1 Ответ

5 голосов
/ 08 ноября 2011

Самый простой способ связать XML с видом сетки - это загрузить XML в DataSet, а затем связать DataSet с видом сетки:

StringReader sr= new StringReader(xml); 
DataSet ds = new DataSet();
ds.ReadXml(sr);

Gridview.DataSource=ds.Tables[1];
Gridview.DataBind();

Причина для выполнения ds.Tables[0] заключается в том, что ваш пример содержит 2 набора Answers, и когда вы загружаете DataSet с вашим XML, первый DataTable будет содержать столько строк, сколько наборов ответов у вас есть в XML, а второй таблица будет содержать все строки из всего набора ответов.

Способ отображения LinqPad выглядит следующим образом:

enter image description here

UPDATE:

string xml=@"<?xml version=""1.0""?>
<Answers>
  <AnswerSet>
<Answer questionId=""MRN"">4444</Answer>
<Answer questionId=""FName"">test</Answer>
<Answer questionId=""LName"">patient</Answer>
<Answer questionId=""AddressPt"">blah blah</Answer>
<Answer questionId=""Governorate"">xxxx</Answer>
<Answer questionId=""InitialCSF"">Negative</Answer>
<Answer questionId=""Diagnosis""></Answer>
<Answer questionId=""Description"">
</Answer>
  </AnswerSet>
  <AnswerSet>
<Answer questionId=""MRN"">1</Answer>
<Answer questionId=""FName"">1</Answer>
<Answer questionId=""LName"">1</Answer>
<Answer questionId=""AddressPt"">1</Answer>
<Answer questionId=""InitialCSF"">Positive</Answer>
<Answer questionId=""Diagnosis"">dx</Answer>
<Answer questionId=""Description"">
</Answer>
  </AnswerSet>
 </Answers>";
StringReader sr= new StringReader(xml); 
 DataSet ds = new DataSet();
 ds.ReadXml(sr);
 ds.Merge(ds,true);
 gridview.DataSoure=ds.Tables[1];
     gridview.DataBind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...