指数超出范围.必须非负且小于集合的大小.参数名称:index (DECIMAL)
本文关键字:参数 DECIMAL index 集合 范围 小于 指数 | 更新日期: 2023-09-27 18:04:56
SalesOrderEntry rey = new SalesOrderEntry(id, cash);
total = Convert.ToInt32(lblCustomersCash.Text) - Convert.ToInt32(lblSubtotal.Text);
if (total > cash)
{
DGVTOTAL.DataSource = ProductREPO.GETORDERTOTALLIST();
for (int i = 0; i < DGVORDER.Rows.Count; ++i)
{
SalesOrderEntry see = new SalesOrderEntry(id, cash);
//CASH = 649 and im selecting an item that is equivalent to 30
sum2 = Convert.ToInt32(DGVORDER.Rows[i].Cells["OrderedProductPrice"].Value);
dgvGetID.DataSource = SalesORDERREPO.weredone(id);
decimal newcash = int.Parse(dgvGetID.Rows[0].Cells["Cash"].Value.ToString());
MessageBox.Show("NEW BALANCE CASH: " + newcash);
}
}
else
{
MessageBox.Show("Hey your Cash is not ENOUGH to Buy this ITEM");
}
我想显示它的新现金余额…扣除到它的小计…但是我有这个错误:
<Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index>
你确定dgvGetID包含item吗?
DataGridViews行从元素0开始,而不是元素1,因此当试图访问第6个元素时,您需要访问DGV。行[5]不DGV。DataGridViews.Rows.Count返回从1开始而不是0的行数
编辑:澄清评论
datagridview行数组从元素0开始,所以datagridview1。Rows[0]给出DGV (DataGridView)的第一行。
在所提供的代码中,海报循环直到DGV.ROWS.COUNT,它将返回基于非零的计数。我的意思是,如果有6行,那么计数返回6,但在DGV的最后一行。ROWS数组由DGV访问。行[5],因为Rows数组是从零开始(从0开始),所以行[0]是第一行,行[1]第二行等…希望大家明白了