Forum Pplware
C# DataSet/DataTable XML - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: C# DataSet/DataTable XML (/showthread.php?tid=8374)

Páginas: 1 2


C# DataSet/DataTable XML - ricken - 07-02-2011 16:47

Boas precisava de ajuda a carregar um ficheiro XML numa datatable que por sua vez encontra-se dentro de um dataset.

o cenário é o seguinte:

Tenho este datatable criado num dataset

[Imagem: imagemlc.jpg]

Estou a tentar ler/carregar o xml nesta datatable e não estou a conseguir, bem como visualizar.

O codigo que tenho é o seguinte:
Código:
DataSetleit dataleit = new DataSetleit();
                dataleit.DataTable1.ReadXml(caminho);
                dataTable1DataGrid.DataContext = dataleit.DataTable1.DefaultView;

Tenho estado a pesquisar mas não estou a conseguir chegar la.

Este codigo que coloquei funciona mas quando o dataset ou datagrid não é criado em modo visual

Eu consigo ler o xml e carregar num datagrid desta maneira, mas como disse não tenho nada criado em modo visual e precisava para poder fazer report's dinamicos.

Código:
DataSet objDataSet = new DataSet();
                objDataSet.ReadXml(caminho);
                dataGrid1.DataContext = objDataSet.Tables[0].DefaultView;

Podem-me dar umas luzes?

Cptos
Obrigado


RE: C# DataSet/DataTable XML - rei007 - 08-02-2011 14:04

Viva,

Se entendi bem o teu problema o exemplo que te envio em anexo deve te ajudar.

O que eu faço é carregar todo o conteúdo do XML para um DataSet, depois associo a um DataTable e para provar que os dados estão lá eu associo o DataTable a uma DataGridView.


RE: C# DataSet/DataTable XML - ricken - 09-02-2011 00:20

Boas, certo mas eu isto consigo fazer.

A questão é que o dataset e o datatable que tu crias é em codigo e não em modo "visual" como eu mostro no print.

Exprimenta no projecto->Botão Direito->Add new item->Data->Dataset

Depois dentro do dataset criar um datatable como eu tenho ali.

Finalmente nos datasources isso aparece ja pronto para arrastar e ele automaticamente cria a gridview, a questão é carregar la o xml.

Isto em modo visual é necessario para criar depois um report e ele ler automaticamente o datset.

Não sei se me estou a fazer entender Smile


PS: Dcp nao ter dito mas tou a usar WPF, em windows forms o dataset ate aparece na toolbox presumo eu


RE: C# DataSet/DataTable XML - rei007 - 09-02-2011 00:40

Viva,

Amanhã quando chegar à empresa eu crio-te então um exemplo. Podias enviar-me um XML exemplo para testes?!


RE: C# DataSet/DataTable XML - ricken - 09-02-2011 11:47

Aqui vai

Obrigado

Cptos


RE: C# DataSet/DataTable XML - rei007 - 09-02-2011 18:04

Ora Viva mais uma vez,

Penso que o que desejas deve ser o que te envio em anexo com o nome "WpfApplication1.zip".

Para quem quiser também envio o mesmo projecto em WinForms.


RE: C# DataSet/DataTable XML - ricken - 09-02-2011 18:14

Epa não me digas que é so este pedaço de codigo Confused
Código:
public partial class MainWindow : Window
    {
      
            DataSet1.ItinerarioDataTable icdt = new DataSet1.ItinerarioDataTable();

        public MainWindow()
        {

            InitializeComponent();
        }

        protected override void OnInitialized(EventArgs e)
        {
            base.OnInitialized(e);

            icdt.ReadXml("teste.xml");

            _dataGrid.ItemsSource = icdt.DefaultView;
        }
    }
}

Ja agora tira-me outra duvida, este método que utilizaste no caso de teres mais colunas no xml ele apenas vai ligar as que la estão certo?

Agora vê como eu tinha dado a volta a questão, tinha criado um dataset manualmente como mostraste no 1 exemplo e depois copiava para o outro Smile

Código:
DataSet objDataSet = new DataSet();
                objDataSet.ReadXml(filename);

                DataRow dr1;
                DataSetLeit dsLeit = new DataSetLeit();
                foreach (DataRow dr in objDataSet.Tables[0].Rows)
                {
                    dr1 = dsLeit.Itinerario.NewRow();
                    dr1["ORG_ID"] = dr["ORG_ID"];
                    dr1["ROUTE_ID"] = dr["ROUTE_ID"];
                    dr1["CYCLE_YEAR"] = dr["CYCLE_YEAR"];
                    dr1["CYCLE_NUMBER"] = dr["CYCLE_NUMBER"];
                    dr1["ITINERARIE_NUMBER"] = dr["ITINERARIE_NUMBER"];
                    dr1["ITINERARIE_STATE"] = dr["ITINERARIE_STATE"];
                    dr1["DATE_THEOR"] = dr["DATE_THEOR"];
                    dr1["DATE_READING"] = dr["DATE_READING"];
                    dsLeit.Itinerario.Rows.Add(dr1);
                }
                itinerarioDataGrid.DataContext = dsLeit.Itinerario.DefaultView;



RE: C# DataSet/DataTable XML - rei007 - 09-02-2011 19:03

Viva,

Se tiveres mais ou menos campos ele carrega só os que estão estipulados no DataTable.

O que fizeste é uma opção, mas o que eu fiz agora são duas ou três linhas de código. Demorei mais tempo porque tive de perceber como funcionava o WPF pois nunca programei nessa tecnologia.


RE: C# DataSet/DataTable XML - ricken - 09-02-2011 19:08

Certo, mas o que fizeste são "best practices" a partida, porque o que eu fiz é uma solução de contorno que pode trazer mais problemas a posterior.

Obrigado pela ajuda

Cumprimentos


RE: C# DataSet/DataTable XML - Shogun - 12-02-2011 15:04

Porque não usar o xsd.exe para gerar a classe que representa o xsd que escreveste e dp xml serializer para ler o ficheiro xml?

Não é muito mais pratico?!