Значения DataGridview не очищаются и добавляются к вновь вставленным значениям - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть следующий код для добавления значений в gridview

            int row = 0;
            dataGridView1.Rows.Add();
            row = dataGridView1.Rows.Count-2 ;
            dataGridView1["Description",row].Value = prod_name.SelectedItem.ToString();
            dataGridView1["Quantity", row].Value = txtQty.Text;
            dataGridView1["Price", row].Value = p;
            dataGridView1["Discountcell", row].Value = txtdisc_prod.Text;
            dataGridView1["amt", row].Value = tot;

и для очистки я пробовал разные коды: 1

foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                cell.Value = "";
            }
        }

2

    this.dataGridView1.DataSource = null;
    this.dataGridView1.Rows.Clear();
    dataGridView1.Refresh();

значения сбрасываются с обоими кодами, но когда я добавляю новые значения и вычисляю их, предыдущие значения также добавляются с ними. Ниже приведен мой код для расчета:

for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
                float f, d, price;
                if (float.TryParse(dataGridView1.Rows[i].Cells["amt"].Value.ToString(), out f))
                {
                    gross_amt = gross_amt + f;
                }
                if (float.TryParse(dataGridView1.Rows[i].Cells["discountcell"].Value.ToString(), out d))
                {
                    dis_tot = dis_tot + d;
                }
            }

Обновление Это приложение для Windows

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019
 Assuming it is a web based application  :  
You are not binding the grid with null data source:
    use this to clear out the data and bind them.

        DataTable ds = new DataTable();
        ds = null;
        grd.DataSource = ds;
        grd.Update();

    IF you need to remove column name also use the below code snippet:

    for (int i = 0; grd.Columns.Count > i; )
    {
        grd.Columns.RemoveAt(i);
    }
1 голос
/ 12 апреля 2019

Где вы объявляете gross_amt и dis_tot? Вы сбрасываете их обратно в 0 (или какой номер по умолчанию вы хотите) перед запуском цикла for? в противном случае они будут просто добавляться из предыдущего цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...