在datagridview中获取2个单元格值

时间:2017-07-22 15:47:35

标签: c# datagridview

我有两个datagridviews。 datagridview1datagridview2。当我将产品从datagridview1添加到datagridview2时,datagridview1中的产品数量会转移到datagridview2。现在,当我从datagridview2移除产品时,我需要将其转移回datagridview1

enter image description here

这是我的代码。:

private void btnRemove_Click(object sender, EventArgs e)
    {

        int ind = findIndexForItem(dgvPOScart.CurrentRow.Cells[0].Value.ToString());

        int dgvCARTquantity = Convert.ToInt32(dgvPOScart.CurrentRow.Cells[4].Value.ToString());
        int dgvPOSquantity = Convert.ToInt32(dgvPOScart.Rows[ind].Cells[5].Value.ToString());     
        int dgvnewADDquantity;

        dgvnewADDquantity = dgvPOSquantity + dgvCARTquantity;

        foreach (DataGridViewRow item in this.dgvPOScart.SelectedRows)
        {    
            dgvPOScart.Rows.RemoveAt(item.Index);         
        }

    }

帮助者的代码:

        private int findIndexForItem(string name)
    {
        int ind = -1;
        for (int i = 0; i < dgvPOSproduct.Rows.Count; i++)
        {
            if (dgvPOSproduct.Rows[i].Equals(name))
            {
                ind = i;
                break;
            }
        }
        return ind;                
    } 

如何正确调用ind? Rows[ind]是错误的,因为ind是产品ID或值或cell[0]而不是行索引。或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您的代码有点奇怪,您正在预测SelectedRows,但您只计算当前行的新数量,为什么?

此外,您不应该按照他们的名字查看产品,因为您有他们的ID(比名称更独特)。

为了实现这一点,你需要这样的东西:

private void btnRemove_Click(object sender, EventArgs e)
{
    foreach (var row in dgvPOScart.SelectedRows)
    {
        // Get the row in dgvProducts and the quantity he'll gain back
        var productRow = dgvPOSproduct.Rows[FindRowIndexByID(row.Cells[0].Value)];
        int qtyToAdd = Convert.ToInt32(row.Cells[4].Value);

        // Add the quantity back
        productRow.Cells[5].Value = Convert.ToInt32(productRow.Cells[5].Value) + qtyToAdd;
    }
}

private int FindRowIndexByID(string id)
{
    for (int i = 0; i < dgvPOSproduct.Rows.Count; i++)
    {
        if (dgvPOSproduct.Rows[i].Cells[0].Value == id)
        {
            return i;
        }
    }

    return -1;               
}