none
Alguma forma de inserir várias linhas numa única tabela RRS feed

  • Pergunta

  • ola,

    tenho procurado alguma solução para resolver um problema tipo venda, onde tenho uma tabela (gridView) com basicamente 10 linhas editáveis. ao preencher as linhas, por exemplo vendendo produtos para depois fechar uma factura. um exemplo:

    tabela formado por: codigoProduto | NomeProduto | PreçoProduto |

    preencho todas as linhas pretendidas e no momento de inserir na base de dados gostaria de arranjar uma forma de inserir todas as linhas preenchidas do gridView e ir inserindo nessa tabela. esta tabela também contem o codigo do cliente que fez a compra e a data...

    o meu problema esta em inserir todas essas linhas, basicamente todos estao na mesma factura, o que implica que todos ao serem inseridos na bd devem levar pralem dos detalhes o codigo da factura, o id do cliente e a data...

    será que tem alguma forma de percorrer linha por linha do gridview e ir inserindo na base de dados ate a ultima linha preenchida??

    ajuda pf...

    quarta-feira, 2 de janeiro de 2013 14:45

Respostas

  • Cara,

    Você pode percorrer as linhas do seu gridview da seguinte forma:

    for (int i = 0; i < grdMinhaGrid.Rows.Count; i++) {

    int intCodigo = Convert.ToInt32(grdMinhaGrid.Rows[i].Cells[0]);

    string strNome = grdMinhaGrid.Rows[i].Cells[1].ToString(); }

    // OU

    for (int i = 0; i < grdMinhaGrid.Rows.Count; i++) {

    int intCodigo = Convert.ToInt32(grdMinhaGrid.DataKeys[i][0]);

    string strNome = grdMinhaGrid.DataKeys[i][1].ToString();

    }

    Essas são algumas formas de se percorrer uma grid.


    Atenciosamente, Samuel dos Anjos

    quarta-feira, 2 de janeiro de 2013 22:12
  • Cara,

    Vai depender de ambiente para ambiente, pois por exemplo já tive casos onde era mais performático eu passar linha a linha e inserir na base de dados e um outro ambiente onde passei tudo para uma tabela (DataTable) e enviei como parametro para a minha storage procedure um tipo tabela criado por eu mesmo e trabalhei com cursor no banco para ler esse parametro do tipo tabela.

    Se for um caso tranquilo, onde não vai ultrapassar uma grande quantidade de tuplas(linhas) (100 - 300) linhas chutando um valor mais ou menos, pode continuar com a ideia de linha a linha, mas se for bem superior a isso, aconselho a procurar uma outra forma de se fazer isso.


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 3 de janeiro de 2013 21:38

Todas as Respostas

  • Usa um datatable percorre esse datatable e vai inserindo as linhas é assim que eu faço. ou então percorre o gridview e vai inserindo as linhas.


    Junior

    quarta-feira, 2 de janeiro de 2013 16:45
  • agradeço junior, mas algum exemplo prático bastante simples de fazer isso só para entender melhor??

    fico aguardando e muito obrigado por tudo

    quarta-feira, 2 de janeiro de 2013 21:33
  • Cara,

    Você pode percorrer as linhas do seu gridview da seguinte forma:

    for (int i = 0; i < grdMinhaGrid.Rows.Count; i++) {

    int intCodigo = Convert.ToInt32(grdMinhaGrid.Rows[i].Cells[0]);

    string strNome = grdMinhaGrid.Rows[i].Cells[1].ToString(); }

    // OU

    for (int i = 0; i < grdMinhaGrid.Rows.Count; i++) {

    int intCodigo = Convert.ToInt32(grdMinhaGrid.DataKeys[i][0]);

    string strNome = grdMinhaGrid.DataKeys[i][1].ToString();

    }

    Essas são algumas formas de se percorrer uma grid.


    Atenciosamente, Samuel dos Anjos

    quarta-feira, 2 de janeiro de 2013 22:12
  • Obrigado Samuel, 

    a melhor forma é percorrer o gridview e ir inserindo logo na base de dados, ou tem outra forma de fazer isso para uma melhor performace??

    desculpa essas perguntas, é que tenho um storedProcedure criado para inserir na base de dados esses valores, entao gostaria de saber se chamo esse SP dentro do ciclo for...

    Agradeço

    quarta-feira, 2 de janeiro de 2013 22:33
  • Cara,

    Vai depender de ambiente para ambiente, pois por exemplo já tive casos onde era mais performático eu passar linha a linha e inserir na base de dados e um outro ambiente onde passei tudo para uma tabela (DataTable) e enviei como parametro para a minha storage procedure um tipo tabela criado por eu mesmo e trabalhei com cursor no banco para ler esse parametro do tipo tabela.

    Se for um caso tranquilo, onde não vai ultrapassar uma grande quantidade de tuplas(linhas) (100 - 300) linhas chutando um valor mais ou menos, pode continuar com a ideia de linha a linha, mas se for bem superior a isso, aconselho a procurar uma outra forma de se fazer isso.


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 3 de janeiro de 2013 21:38