嗨,我有一个两个DataridViews,我想datagridview1's
第一行是当前或选定的行,所以当我点击“添加到购物车”按钮,我不必点击第一行,它会去到datagridview2.
Datagridview currentrow or selectedrow
,但我似乎无法做到这一点。它还是进入验证说请先选择产品。 dgv1.Rows[0].Selected = true;
不起作用。
我可以通过先点击一行然后点击“添加到购物车”按钮,它会去datagridview2
手动。但我想自动完成。 给你一个想法,我想要做的是条形码扫描,当你扫描条形码时,它会显示在datagridview1中,并自动去datagridview2
。
为了简化故事,我需要的是以编程方式选择datagridview1的第一行作为我的代码工作的“当前行”或“选定行”。 你可以把它作为,我想以编程方式“点击”第一行。
但这是我的代码,如果你们想看。 这是我的条码文本框TextChanged事件代码:
private void txtBarcodeSearch_TextChanged(object sender, EventArgs e)
{
if (txtBarcodeSearch.Text != "" && txtBarcodeSearch.Text.Length == 13)
{
crud.FillDataGrid("Select ProductID,BrandName,GenericName,Form,Dosage,Quantity,SellingPrice,D,VE from Products where (Status = 'Active' and Quantity > 0) and Barcode Like '%" + txtBarcodeSearch.Text + "%' ", ref dgvPOSproduct);
dgvPOSproduct.Rows[0].Selected = true;
clicktry();
dgvPOSproduct.Columns[0].HeaderText = "ProductID";
dgvPOSproduct.Columns[1].HeaderText = "Brand";
dgvPOSproduct.Columns[2].HeaderText = "Generic";
dgvPOSproduct.Columns[3].HeaderText = "Form";
dgvPOSproduct.Columns[4].HeaderText = "Dosage";
dgvPOSproduct.Columns[5].HeaderText = "Qty";
dgvPOSproduct.Columns[6].HeaderText = "Price";
dgvPOSproduct.Columns[7].HeaderText = "D";
dgvPOSproduct.Columns[8].HeaderText = "VE";
dgvPOSproduct.Columns[0].Width = 65;
dgvPOSproduct.Columns[1].Width = 80;
dgvPOSproduct.Columns[2].Width = 80;
dgvPOSproduct.Columns[3].Width = 58;
dgvPOSproduct.Columns[4].Width = 58;
dgvPOSproduct.Columns[5].Width = 45;
dgvPOSproduct.Columns[6].Width = 55;
dgvPOSproduct.Columns[7].Width = 35;
dgvPOSproduct.Columns[8].Width = 35;
if (dgvPOSproduct.Rows.Count == 1)
{
dgvPOSproduct.Rows[0].Selected = true;
clicktry();
}
}
else
{
dgvProductSettings();
}
}
这是clicktry方法代码: -
private void clicktry()
{
if (!validateProduct())
{
return;
}
else if (!QtyDialog())
{
return;
}
if (!notIncartyet())
{
return;
}
else
{
int str, qty;
str = Convert.ToInt32(storeqty.Text);
qty = Convert.ToInt32(quantity.Text);
temporaryquantity.Text = str.ToString();
if (str < qty || str == 0)
{
MessageBox.Show("Insufficient Stock", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
continuetocart();
}
}
}
这是继续到购物车方法: -
private void continuetocart()
{
dgvPOSproduct.CurrentCell = dgvPOSproduct.Rows[0].Cells[0];
qty = Convert.ToInt32(quantity.Text);
unitprice = Convert.ToDouble(dgvPOSproduct.CurrentRow.Cells[6].Value.ToString());
totalprice = qty * unitprice;
unittotal.Text = totalprice.ToString("0.00");
addData
(
dgvPOSproduct.CurrentRow.Cells[0].Value.ToString(), //prod id
dgvPOSproduct.CurrentRow.Cells[1].Value.ToString(), //brand
dgvPOSproduct.CurrentRow.Cells[4].Value.ToString(), //dosage
dgvPOSproduct.CurrentRow.Cells[6].Value.ToString(), //qty
quantity.Text,
unittotal.Text,
dgvPOSproduct.CurrentRow.Cells[7].Value.ToString(),
dgvPOSproduct.CurrentRow.Cells[8].Value.ToString()
);
int dgvPOSquantity = Convert.ToInt32(dgvPOSproduct.CurrentRow.Cells[5].Value.ToString());
int dgvnewquantity;
dgvnewquantity = dgvPOSquantity - qty;
dgvPOSproduct.CurrentRow.Cells[5].Value = dgvnewquantity;
discountremoveitem();
}
validateProduct()显示此验证消息?你检查那里dgvPOSproduct.CurrentRow为空? crud.FillDataGrid()如何将数据加载到网格? –
谢谢先生,我知道我的验证是错误的。当我点击datagridview中的单元格时,它的ID被放置在一个文本框中,我的validateProduct()只是检查该标签是否为null。什么是验证产品是否尚未被选择或当前选择的合适先生? – FutureDev