none
Update Listview C# Win.Forms RRS feed

  • Pergunta

  • Bom dia!

    Pessoal eu tenho a seguinte situação, tenho um DataGridView onde utilizo o evento SelectedChanged, eu seleciono o registro que eu preciso e vou populando um ListView, porém quando eu selecionar o mesmo registro mais de uma vez eu preciso somente fazer update na coluna "quantidade". É possível fazer isto ??
    Pois da forma que eu estou fazendo o programa está até alterando a quantidade, mais está ainda lançando mais uma vez no meu listview.

    Segue o código:

    foreach (DataRow dr in dsPreVendaItem.dtPreVendaItem.Rows)
                    {
                        if (dr["codigo_produto"].ToString() == vProCod.Trim())
                        {
                            // Verifica se já existe o mesmo código do produto
                            DataRow[] ItemPrevenda = dsPreVendaItem.dtPreVendaItem.Select("codigo_produto = " + vProCod.ToString().Trim());
                            ItemPrevenda[0]["item"] = dsPreVendaItem.dtPreVendaItem.Count;
                            ItemPrevenda[0]["codigo_produto"] = vProCod.ToString().Trim();
                            ItemPrevenda[0]["descricao_cupom"] = dts.Tables[0].Rows[0]["DESCRICAO"].ToString().Trim();
                            ItemPrevenda[0]["quantidade"] = ++vQtde;
                            ItemPrevenda[0]["valor"] = dts.Tables[0].Rows[0]["PRECO_VENDA"].ToString().Trim();
                            ItemPrevenda[0]["desconto"] = 0.00m;
                            ItemPrevenda[0]["total"] = dts.Tables[0].Rows[0]["PRECO_VENDA"].ToString().Trim();
                            existe = true;
                        }
                    }

                    DataRow drPreVendaItem;
                    drPreVendaItem = dsPreVendaItem.dtPreVendaItem.NewRow();

                    try
                    {
                        drPreVendaItem["item"] = dsPreVendaItem.dtPreVendaItem.Count + 1;
                        drPreVendaItem["codigo_produto"] = dts.Tables[0].Rows[0]["CODIGO_PRODUTO"].ToString().Trim();
                        drPreVendaItem["descricao_cupom"] = dts.Tables[0].Rows[0]["DESCRICAO"].ToString().Trim();
                        drPreVendaItem["quantidade"] = vQtde;
                        drPreVendaItem["valor"] = dts.Tables[0].Rows[0]["PRECO_VENDA"].ToString().Trim();
                        drPreVendaItem["desconto"] = 0.00m;
                        drPreVendaItem["total"] = dts.Tables[0].Rows[0]["PRECO_VENDA"].ToString().Trim();

                        dsPreVendaItem.dtPreVendaItem.Rows.Add(drPreVendaItem);
                        tabControlPrevenda.SelectedTab = tabPage3;
                        acao = false;

                        //Joga as informações no Listview
                        DataTable dtable = dsPreVendaItem.Tables["dtPreVendaItem"];
                        listView1.Items.Clear();

                        listView1.BeginUpdate();
                        for (int i = 0; i < dtable.Rows.Count; i++)
                        {
                            DataRow drow = dtable.Rows[i];
                            if (drow.RowState != DataRowState.Deleted && !existe)
                            {
                                // Define a lista de itens
                                ListViewItem lvi = new ListViewItem(drow["item"].ToString());
                                lvi.SubItems.Add(drow["codigo_produto"].ToString());
                                lvi.SubItems.Add(drow["descricao_cupom"].ToString());
                                lvi.SubItems.Add(drow["quantidade"].ToString());
                                lvi.SubItems.Add(drow["valor"].ToString());
                                lvi.SubItems.Add(drow["desconto"].ToString());
                                lvi.SubItems.Add(drow["total"].ToString());

                                //Add a lista de itens ao listview
                                listView1.Items.Add(lvi);
                                listView1.Refresh();

    Se alguém tiver uma dica !!!!!


    Abraço
    segunda-feira, 11 de maio de 2009 13:09

Respostas

  • Pessoal, eu achei uma forma bem mais fácil de resolver este problema, segue o código:

                    foreach (ListViewItem o in listView1.Items)
                    {
                        vItem = Convert.ToInt32(o.SubItems[0].Text);
                        if (o.SubItems[1].Text == vProCod.Trim())
                        {
                            vQtde = Convert.ToDecimal(o.SubItems[3].Text) + 1;
                            o.SubItems[3].Text = vQtde.ToString();

                            vValorItem = vQtde * Convert.ToDecimal(o.SubItems[4].Text);
                            o.SubItems[6].Text = vValorItem.ToString();

                            vProduExiste = true;
                        }
                    }
    Ai não preciso usar DataSet, nada além destas linhas de código... no fim era eu que estava complicando...

    Grande abraço
    • Marcado como Resposta Leosul segunda-feira, 11 de maio de 2009 17:15
    segunda-feira, 11 de maio de 2009 17:15