none
Erro ao Converter DataGridViewRow para DataRow RRS feed

  • Pergunta

  • Bom dia,

    Estou com problemas para converter um DataGridViewRow para um DataRow, pesquisando na internet eu encontrei vários posts com a seguinte resolução:

    foreach(DataGridViewRow linha in _grdData.Rows)
    {
                        DataRow myRow = (linha.DataBoundItem as DataRowView).Row;
    
                        dt.Rows.Add(myRow);
    }

    Porém, no meu caso estou tendo o seguinte erro ao executar este comando:

    Object reference not set to an instance of an object.

    Mas, o meu objeto "linha" tem itens! alguém tem ideia de como resolver isto ?


    Giuvane Conti - Se a resposta for útil, marque-a.

    sexta-feira, 8 de março de 2013 13:09

Todas as Respostas

  • Se é que ajuda, a conversão para "DataRowView" não funciona, não sei o motivo! o item "DataBoundItem" é uma classe de banco de dados, uma entidade de um "Entity Data Model"...

    Giuvane Conti - Se a resposta for útil, marque-a.

    sexta-feira, 8 de março de 2013 14:00
  • Giuvane,

    Você vai ter que validar se o tipo desta sua linha é igual da calsse e fazer um CAST para sua classe. Para depois usar das propriedades e colocar no DataTable:

    private void button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
                
        dt.Columns.Add("MinhaColuna", typeof(string));
    
        foreach (DataGridViewRow linha in dataGridView1.Rows)
        {
            if (linha.DataBoundItem.GetType() == typeof(MinhaClasse))
            {
                MinhaClasse linhaMinhaClasse = (MinhaClasse)linha.DataBoundItem;
    
                dt.Rows.Add(linhaMinhaClasse.Valor);
            }
    
            //dt.Rows.Add(myRow);
        }
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    sexta-feira, 8 de março de 2013 17:22
  • Se está dando erro de objeto não instanciado você deve verificar se o objeto _grdData está instanciado nesse momento ai, esse é realmente o objeto que está trabalhando? Ou se o objeto dt está instanciado.

    Quando você faz um foreach em um objeto vazio ou tenta converter ali dentro, o erro não é esse.


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    terça-feira, 19 de março de 2013 05:06