2013-08-07 2 views
2

У меня есть эта XML:как загрузить DataGridView с моими данными из XML

<container_1 attr1="..." attr2="..." attr3="..."> 
    <rekord_1> 
    <type_1 attr1="..." attr2="..." ... /> 
    <type_2 attr1="..." attr2="..." ... /> 
    </rekord_1> 
    <rekord_2>... </rekord_2> 
    . 
    . 
    <rekord_N> ... </rekord_N> 
</container_1> 

я могу разобрать, как я хочу, и показать его в консольном приложении (с помощью XMLElements, XMLNodeLists и несколько петель), но Я хочу создать приложение с графическим интерфейсом и табличным представлением. Мое приложение формы может читать XML, но оно может обрабатывать только 1 тег прямо сейчас. Например, если я получаю тег container_1, он выводит только атрибуты container_1, но я хочу показать записи в разделе container_1 в виде таблицы.

Я хочу, чтобы это выглядело как моя старая программа в консоли.

Как я могу получить данные из моего XML, чтобы я мог работать с элементами/атрибутами? Потому что я хочу установить их место в представлении таблицы. Какую документацию следует читать? Или есть какой-то пример, который может мне пригодиться?

Edited (. 20 августа): Вот основная часть кода:

private void button1_Click(object sender, EventArgs e) 
    { 
     Stream input=null; 
     OpenFileDialog dialog = new OpenFileDialog(); 
     openFileDialog1.InitialDirectory = "C:/"; 
     openFileDialog1.Filter = "xml file | *.xml"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) { 
      try 
      { 
       if ((input = openFileDialog1.OpenFile()) != null) 
       { 
        using (input) 
        { 
         XmlReader xmlFile = XmlReader.Create(input, new XmlReaderSettings()); 
         DataSet dataSet = new DataSet(); 
         dataSet.ReadXml(xmlFile); 
         DataSet containers = new DataSet(); 
         dataGridView1.DataSource = dataSet.Tables[tag]; 
         xmlFile.Close(); 
        } 
       } 
      } 
      catch (Exception ex) { 
       MessageBox.Show("ERROR"); 
      } 
     } 
    } 

Эта функция хорошо работает дисплей, если мой тег контейнера или Rekord и делает вывод: outputs

Но я не могу отобразить container1 + его rekords, container2 + его rekords и т. Д., Только все контейнеры или все рекорды в одно и то же время.

+0

Вы можете показать код для того, что вы уже пробовали и как выглядит результат? – Malachi

+0

Я сделал это.Заборился за поздний ответ, и спасибо, что вы пытались мне помочь. – Gabor

ответ

0

звучит так, как вы хотите сделать, это вытащить XML в набор данных и затем передать этот DataSet в Gridview.

и, похоже, кто-то уже задавал этот вопрос на Stack бирже, а также

Any way to populate items from xml to Datagridview using c#

Сложение

, что у вас есть это DataSet с несколькими DataTables. DataGridView может отображать только один DataTable за раз.

когда код

dataGridView1.DataSource = dataSet.Tables[tag]; 

и положить container_1 в течение tag вы тянете назад container_1TABLE вашего DataSet.

Я предлагаю вам посмотреть MSDN для DataGridView, DataSet и DataTable, чтобы узнать, действительно ли это будет работать для вас.

возможно также проверить это C# DataGridView Tutorial

это не может повредить.

+0

Я тоже нашел этот вопрос. В моем случае, если я расскажу программе, этот тег - container_1, он показывает мне всю информацию о container_1 и ее хорошем, но я хочу видеть в то же время всю связанную запись под тегом container_1. И это моя главная проблема , что я не могу сделать это в одно и то же время. – Gabor

+0

ваш 'container_1',' container_2', вероятно, будет отображаться в наборе данных в виде отдельных таблиц. – Malachi

+0

Разве нет решения для моего плана? Мне просто нужен простой вид таблицы, который отображает container_1 в одной строке, после чего рекорды входят в следующие несколько строк, container_2 и т. Д. У вас есть идея? Thx – Gabor

Смежные вопросы