C# 在datagridview中获取单元格的2个值
我有两个DataGridViewC# 在datagridview中获取单元格的2个值,c#,datagridview,C#,Datagridview,我有两个DataGridViewdatagridview1和datagridview2。当我将产品从datagridview1添加到datagridview2时,datagridview1中的产品数量将转移到datagridview2。现在,当我从datagridview2中删除产品时,我需要它将数量传输回datagridview1 这是我的密码 private void btnRemove_Click(object sender, EventArgs e) { in
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()。对于另一个奇怪的错误