Colocar Resposta 
 
Avaliação do Tópico:
  • 3 votos - 3 Média
  • 1
  • 2
  • 3
  • 4
  • 5
C# DataSet/DataTable XML
07-02-2011, 16:47 (Esta mensagem foi modificada pela última vez a: 07-02-2011 19:03 por ricken.)
Mensagem: #1
C# DataSet/DataTable XML
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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
08-02-2011, 14:04
Mensagem: #2
RE: C# DataSet/DataTable XML
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.


Ficheiro(s) anexado(s)
.zip  XmlToDataTable.zip (Tamanho: 43,29 KB / Downloads: 46)

Cumps,
Manuel Rocha

[Imagem: pplware_staff.png]
Licenciado em Informática para a Saúde pela ESTG Leiria
Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense
Especialização em Design Gráfico
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 00:20 (Esta mensagem foi modificada pela última vez a: 09-02-2011 00:26 por ricken.)
Mensagem: #3
RE: C# DataSet/DataTable XML
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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 00:40
Mensagem: #4
RE: C# DataSet/DataTable XML
Viva,

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

Cumps,
Manuel Rocha

[Imagem: pplware_staff.png]
Licenciado em Informática para a Saúde pela ESTG Leiria
Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense
Especialização em Design Gráfico
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 11:47 (Esta mensagem foi modificada pela última vez a: 09-02-2011 11:49 por ricken.)
Mensagem: #5
RE: C# DataSet/DataTable XML
Aqui vai

Obrigado

Cptos


Ficheiro(s) anexado(s)
.zip  teste.zip (Tamanho: 425 bytes / Downloads: 12)
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 18:04 (Esta mensagem foi modificada pela última vez a: 09-02-2011 18:05 por rei007.)
Mensagem: #6
RE: C# DataSet/DataTable XML
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.


Ficheiro(s) anexado(s)
.zip  WpfApplication1.zip (Tamanho: 554,22 KB / Downloads: 20)
.zip  WindowsFormsApplication3.zip (Tamanho: 84,29 KB / Downloads: 28)

Cumps,
Manuel Rocha

[Imagem: pplware_staff.png]
Licenciado em Informática para a Saúde pela ESTG Leiria
Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense
Especialização em Design Gráfico
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 18:14 (Esta mensagem foi modificada pela última vez a: 09-02-2011 18:23 por ricken.)
Mensagem: #7
RE: C# DataSet/DataTable XML
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;
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 19:03
Mensagem: #8
RE: C# DataSet/DataTable XML
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.

Cumps,
Manuel Rocha

[Imagem: pplware_staff.png]
Licenciado em Informática para a Saúde pela ESTG Leiria
Mestrado em Informática - Especialização em Sistemas de Informação na Universidade Portucalense
Especialização em Design Gráfico
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-02-2011, 19:08 (Esta mensagem foi modificada pela última vez a: 09-02-2011 19:16 por ricken.)
Mensagem: #9
RE: C# DataSet/DataTable XML
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
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
12-02-2011, 15:04
Mensagem: #10
RE: C# DataSet/DataTable XML
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?!
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 3 Visitante(s)