none
Como Passar um DataTable para outro form . RRS feed

Respostas

  • Boa noite,

    Existe várias formas de fazer isso, segue algumas opções:

    1 - Você poderia cria um construtor "ou mesmo alterar o existente" no form2 que receberia o DataTable:

    public Form2(DataTable datatable)
    {
        InitializeComponent();            
    }

    Assim quando quiser chamar o Form2, no Form1 você faria assim:

    DataTable table = new DataTable(); //Table preenchida
    new Form2(table).Show();

    2 - Outra forma de fazer isso é com classe "static". Crie uma classe:

    public static class DataTableForm
    {
        public static DataTable DataTable { get; set; }
    }

    No Form1 você atribuiria o DataTable:

    DataTable table = new DataTable(); //Table preenchida
    DataTableForm.DataTable = table;

    No Form2 você poderia obter o DataTable assim:

    DataTable table = DataTableForm.DataTable;

    3 - A terceira opção, sua classe e seu método deixaria de ser "static" e você passaria o objeto por parmetro. 

    Espero ter ajudado.

    Att,



    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney terça-feira, 26 de abril de 2016 02:31
    • Marcado como Resposta fabio_costa0311 terça-feira, 26 de abril de 2016 03:51
    terça-feira, 26 de abril de 2016 01:24
  • Renomei atributo DataTable dentro da classe:
    namespace TCCe
    {
        public static class ClassFiEntra
        {
            public static DataTable DataTableForm { get; set; }
        }
    }


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 26 de abril de 2016 03:41

Todas as Respostas

  • Boa noite,

    Existe várias formas de fazer isso, segue algumas opções:

    1 - Você poderia cria um construtor "ou mesmo alterar o existente" no form2 que receberia o DataTable:

    public Form2(DataTable datatable)
    {
        InitializeComponent();            
    }

    Assim quando quiser chamar o Form2, no Form1 você faria assim:

    DataTable table = new DataTable(); //Table preenchida
    new Form2(table).Show();

    2 - Outra forma de fazer isso é com classe "static". Crie uma classe:

    public static class DataTableForm
    {
        public static DataTable DataTable { get; set; }
    }

    No Form1 você atribuiria o DataTable:

    DataTable table = new DataTable(); //Table preenchida
    DataTableForm.DataTable = table;

    No Form2 você poderia obter o DataTable assim:

    DataTable table = DataTableForm.DataTable;

    3 - A terceira opção, sua classe e seu método deixaria de ser "static" e você passaria o objeto por parmetro. 

    Espero ter ajudado.

    Att,



    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney terça-feira, 26 de abril de 2016 02:31
    • Marcado como Resposta fabio_costa0311 terça-feira, 26 de abril de 2016 03:51
    terça-feira, 26 de abril de 2016 01:24
  • Oi Silvaney. 

    Eu ja tenho um datatable  com as colunas e tipos da dados etc.  preenchido. 

    Posso simplesmente criar uma classe  

    namespace TCCe
    {
        class ClassFiEntra
        {
            public static class DataTableForm
            {
                public static DataTable DataTable { get; set; }
            }
        }
    }

    e no form1 com o  chamar a classe 

    ClassFiEntra DTE = new ClassFiEntra ();

    e passar meu datatable preenchido assim.

    DTE.DataTAble = DT; 

    terça-feira, 26 de abril de 2016 02:12
  • Se quiser fazer com a classe "static" você não precisa instanciar:

    namespace TCCe
    {
        public static class ClassFiEntra
        {
            public static DataTable DataTable { get; set; }
        }
    }

    Para passar seu DataTable preenchido você não precisa instanciar ou seja dar "new". Basta fazer assim:

    ClassFiEntra.DataTable = DT;
    Agora para obter seu DataTable lá no Form2 é da mesma forma, sem precisar instanciar:
    DataTable dataTableForm2 = ClassFiEntra.DataTable;
    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 26 de abril de 2016 02:28
  • Obrigado Pela explicação .

    Vou testar e ja te respondo. 

    Att. Fabio.

    terça-feira, 26 de abril de 2016 02:40
  • Silvaney, 

    acho que fiz algo de errado. 

    pois fica dando erro 

    Cannot implicily convert type'system.data.datatable' to ' TCCe.ClassFiEntra.DataTable'

    terça-feira, 26 de abril de 2016 03:09
  • Renomei atributo DataTable dentro da classe:
    namespace TCCe
    {
        public static class ClassFiEntra
        {
            public static DataTable DataTableForm { get; set; }
        }
    }


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 26 de abril de 2016 03:41
  • Erro meu. Desculpa.

    Tudo certinho. 

    Obrigado.

    terça-feira, 26 de abril de 2016 03:51