Fazer uma PerguntaFazer uma Pergunta
 

RespondidoExportar DataGrid para XML

  • quarta-feira, 4 de novembro de 2009 10:48Tiago Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Como faço no C# para exportar os dados de um DataGrid para um arquivo XML fazendo aparecer uma janela de download, para o usuário apontar onde será salvo o arquivo?

Respostas

  • quarta-feira, 4 de novembro de 2009 11:34Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    No evento do seu botão faça isso

    DataSet ds = MethodReturnsDataSet();

    XmlDocument xdoc = new XmlDocument();
    xdoc.LoadXml(ds.GetXml())
  • quarta-feira, 4 de novembro de 2009 11:44Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Ola Tiago,


    Você pode fazer algo deste tipo.

    Exemplo (não sei como você popula o DataGrid, por isso estou fazendo um exemplo bem generico):

    var t = dgAdministradoras.DataSource.GetType();
    
    if (t == typeof(DataTable))
    {
        DataTable dt = (DataTable)dgAdministradoras.DataSource;
        dt.WriteXml("NomeDoArquivo", XmlWriteMode.WriteSchema);
    }
    else if (t == typeof(DataSet))
    {
        DataSet ds = (DataSet)dgAdministradoras.DataSource;
        ds.WriteXml("NomeDoArquivo", XmlWriteMode.WriteSchema);
    }
    

    Você deve fazer a verificação com os tipos de dados que podem carregar o DataGrid.

    Mas diga, como você popula o Grid? Pois existem maneiras melhores da que acabei de demonstrar.


    Atenciosamente
    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 11:52Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

     

    Complementando com o Thiago esse link tem um exemplo bem tranquilo

     

    http://www.devx.com/tips/Tip/28651

     

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
  • quarta-feira, 4 de novembro de 2009 15:18Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Ola Tiago,


    Crie seu DataTable sendo como uma propriedade, sendo a melhor forma em ViewState.

    Exemplo:

    private DataTable DadosGrid
    {
        get
        {
            if (ViewState["DadosGrid"] == null)
            {
                ViewState["DadosGrid"] = new DataTable();
            }
            return (DataTable)ViewState["DadosGrid"];
        }
        set
        {
            ViewState["DadosGrid"] = value;
        }
    }

    O ViewState é mantido o estado dentro da página, ou seja, não "expira", então pode acessar simplesmente:
    DadosGrid.WriteXml(...);

    E é uma forma recomendada de se utilizar ViewState.
    Coloque este código lá em cima, onde fica as variaveis globais.


    Atenciosamente

    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 15:36Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

    Olha esse link bem interessante:

    http://www.macoratti.net/vbn5_tdt.htm

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
  • quarta-feira, 4 de novembro de 2009 17:57Glauber Rocha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Thiago.
    Você não poderia escrever o xml no momento em que carrega seu grid e no clique do botão apenas fazer o download do XML?

    Para escrever o xml, tem o método dataset.xmlwrite(endereco);

    Espero que ajude...



    Notepad na mão e uma idéia na cabeça......Se foi útil, marca lá.... Me ajuda que eu marco também... heheheh

Todas as Respostas

  • quarta-feira, 4 de novembro de 2009 10:52Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola Tiago,


    Você tem o DataSet ou algo do tipo com os dados que estão sendo exibidos no Grid?

    Se sim, é simples.

    Exemplo (com DataSet):

    NomeDoDataSet.WriteXml("DestinoENomeArquivo", XmlWriteMode.WriteSchema);


    Export DataGrid Content to an XML File
    http://www.devx.com/tips/Tip/28651

    Atenciosamente



    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 11:10Tiago Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Thiago,

    No método que vou exportar (no evento click de um botao) não tem o DataSet, seria partindo de um DataGrid mesmo. O DataGrid seria a fonte de dados.

  • quarta-feira, 4 de novembro de 2009 11:33Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola,


    Como você preenche seu DataGrid?
    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 11:34Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    No evento do seu botão faça isso

    DataSet ds = MethodReturnsDataSet();

    XmlDocument xdoc = new XmlDocument();
    xdoc.LoadXml(ds.GetXml())
  • quarta-feira, 4 de novembro de 2009 11:44Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Ola Tiago,


    Você pode fazer algo deste tipo.

    Exemplo (não sei como você popula o DataGrid, por isso estou fazendo um exemplo bem generico):

    var t = dgAdministradoras.DataSource.GetType();
    
    if (t == typeof(DataTable))
    {
        DataTable dt = (DataTable)dgAdministradoras.DataSource;
        dt.WriteXml("NomeDoArquivo", XmlWriteMode.WriteSchema);
    }
    else if (t == typeof(DataSet))
    {
        DataSet ds = (DataSet)dgAdministradoras.DataSource;
        ds.WriteXml("NomeDoArquivo", XmlWriteMode.WriteSchema);
    }
    

    Você deve fazer a verificação com os tipos de dados que podem carregar o DataGrid.

    Mas diga, como você popula o Grid? Pois existem maneiras melhores da que acabei de demonstrar.


    Atenciosamente
    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 11:52Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

     

    Complementando com o Thiago esse link tem um exemplo bem tranquilo

     

    http://www.devx.com/tips/Tip/28651

     

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
  • quarta-feira, 4 de novembro de 2009 11:54Tiago Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Tem um método CarregarGrid(), nele vai ser preenchido um DataTable com os dados vindo de um DataReader, se fosse dentro deste método, blz, mas não é!

    Quando o usuário clicar em um botão exportar, será exportado para XML, portando dentro desse método eu só consigo manipular dados globais como o DataGrid, exceto se eu declarasse um DataSet global, o que não acho bom.

    Tem alguns exemplos disso que quero facilmente no google, mas só para Excel e não XML.
  • quarta-feira, 4 de novembro de 2009 15:18Thiago Dorneles Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Ola Tiago,


    Crie seu DataTable sendo como uma propriedade, sendo a melhor forma em ViewState.

    Exemplo:

    private DataTable DadosGrid
    {
        get
        {
            if (ViewState["DadosGrid"] == null)
            {
                ViewState["DadosGrid"] = new DataTable();
            }
            return (DataTable)ViewState["DadosGrid"];
        }
        set
        {
            ViewState["DadosGrid"] = value;
        }
    }

    O ViewState é mantido o estado dentro da página, ou seja, não "expira", então pode acessar simplesmente:
    DadosGrid.WriteXml(...);

    E é uma forma recomendada de se utilizar ViewState.
    Coloque este código lá em cima, onde fica as variaveis globais.


    Atenciosamente

    Thiago Dorneles
  • quarta-feira, 4 de novembro de 2009 15:36Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

    Olha esse link bem interessante:

    http://www.macoratti.net/vbn5_tdt.htm

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
  • quarta-feira, 4 de novembro de 2009 17:57Glauber Rocha Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Thiago.
    Você não poderia escrever o xml no momento em que carrega seu grid e no clique do botão apenas fazer o download do XML?

    Para escrever o xml, tem o método dataset.xmlwrite(endereco);

    Espero que ajude...



    Notepad na mão e uma idéia na cabeça......Se foi útil, marca lá.... Me ajuda que eu marco também... heheheh