C# 在datagridview中获取单元格的2个值

C# 在datagridview中获取单元格的2个值,c#,datagridview,C#,Datagridview,我有两个DataGridViewdatagridview1和datagridview2。当我将产品从datagridview1添加到datagridview2时,datagridview1中的产品数量将转移到datagridview2。现在,当我从datagridview2中删除产品时,我需要它将数量传输回datagridview1 这是我的密码 private void btnRemove_Click(object sender, EventArgs e) { in

我有两个DataGridView
datagridview1
datagridview2
。当我将产品从
datagridview1
添加到
datagridview2
时,
datagridview1
中的产品数量将转移到
datagridview2
。现在,当我从
datagridview2
中删除产品时,我需要它将数量传输回
datagridview1

这是我的密码

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;                
    } 
private int findIndexForItem(字符串名称)
{
int ind=-1;
对于(int i=0;i

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

您的代码有点奇怪,您正在处理选定的行,但您只计算当前行的新数量,为什么

另外,你不应该看产品的名称,因为你有他们的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;               
} 
private void btnRemove\u单击(对象发送方,事件参数e)
{
foreach(dgvPOScart.SelectedRows中的var行)
{
//获取DGVPProducts中的行以及他将获得的数量
var productRow=dgvPOSproduct.Rows[FindRowIndexByID(row.Cells[0].Value)];
int qtyToAdd=Convert.ToInt32(row.Cells[4].Value);
//把数量加回去
productRow.Cells[5].Value=Convert.ToInt32(productRow.Cells[5].Value)+qtyToAdd;
}
}
私有int FindRowIndexByID(字符串id)
{
对于(int i=0;i
在findIndexForItem中,测试应该是:if(name==(string)dgvPOSproduct.Rows[i].Cells[0].Value)…为了安全起见:。Cells[where]它有一些错误,先生。在btnremoveclick上,第5行和第6行显示“对象不包含“单元格”定义”。在findrowindexbyid上,它说“将左边的字符转换为字符串”,我想我应该在上面加上toString()?但是在按钮移除上呢?是的,您应该在FindRowIndexByID中的.Value上放置.ToString()。对于另一个奇怪的错误