在提交到数据库之前,将新行添加到gridview

时间:2011-01-18 15:20:49

标签: c# gridview insert row

下午好,

我正在开发一个表格来在线下订单。

我从组合框中获取文章,并使用SQL查询获取该文章的详细信息。到目前为止,非常好。

我把那篇文章放到了gridview上。对于一篇文章,一切都好。

我选择了文章,点击插入按钮,并在gridview上插入带有详细信息的文章。

我的问题是如何添加更多行。当我单击插入按钮,使用不同的文章和细节时,我只会获得一行,并覆盖数据。

在所有行都在gridview中之后,我终于可以提交那些行并处理订单。

我应该使用什么来添加我需要的那么多行? ViewState的?会话状态?

我读过一些文章,但没有一篇能帮助我。

谢谢。

编辑:

我使用数据表来存储数据。

 DataTable DT = new DataTable();

        DT.Columns.Add("Artigo");
        DT.Columns.Add("Descricao");
        DT.Columns.Add("IVA");
        DT.Columns.Add("PU");
        DT.Columns.Add("UN");
        DT.Columns.Add("Qtd");
        DT.Columns.Add("TotalLiq");

        try
        {
            int Qtd = Convert.ToInt32(Quantidade.Text);
            int PrecoUnit = glb._precolente;
            float TotalLiq = Qtd * PrecoUnit;

            string str = "SELECT TOP 1 A.Artigo as Artigo, A.Descricao as Descricao, (SELECT Taxa FROM prisalviani.dbo.Iva WHERE Iva = A.Iva)AS IVA, A.UnidadeBase as UN FROM prisalviani.dbo.ARTIGO A where A.Artigo='" + result.ToString() + "'";

            ListaLentes = Motor.Consulta(ref str);


            while (!ListaLentes.NoFim())
            {
                DT.Rows.Add(ListaLentes.Valor("Artigo"),
                            ListaLentes.Valor("Descricao"),
                            ListaLentes.Valor("IVA"),
                            PrecoUnit,
                ListaLentes.Valor("UN"),
                Qtd,
                TotalLiq
                );
                ListaLentes.Seguinte();
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

2 个答案:

答案 0 :(得分:1)

您给出的描述有点模糊,您使用什么样的数据结构来保存订单行?你想实现类似购物篮的东西吗?

您可以实现自己的业务实体或使用数据集/数据表来保存新记录,您可以将这些对象保留在会话中。

有点帮助吗?

答案 1 :(得分:1)

假设您的datagridview包含3个String类型的单元格,

您可以使用:

object [] row1 = new object[] { "StringInCell1","StringInCell2","StringInCell3" }
dataGridView.Rows.Add(row1);

如果您需要编辑特定的单元格,可以使用以下方法进行编辑:

dataGridView.Rows[rowIndex].Cells[cellIndex].Value = "newValue";