如何更改同一行中另一个单元格更改时DataGridView单元格的值?
问题描述:
如何更改同一行中另一个单元格更改时DataGridView单元格的值?
我想更改Amount cell
时Qty or Price changed
。
Amount = Qty * Price
我尝试此代码,它总是给我ArgumentOutOfRangeException。
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dg_invoices_items.Columns[e.ColumnIndex].Name == "qty")
{
dg_invoices_items[e.RowIndex, 4].Value =Convert.ToString(
Convert.ToInt32(dg_invoices_items[e.RowIndex, 2].Value) *
Convert.ToInt32(dg_invoices_items[e.RowIndex, 3].Value));
}
}
答
列索引从0开始,列索引太高。
- 第1列:0,产品
- 第2列:1,数量
- 第三列:2,价格
- 第4列:3,金额
为了避免这种情况,你可以大概使用命名的列:
dg_invoices_items["Qty", e.RowIndex].Value = Convert.ToString(
Convert.ToInt32(dg_invoices_items["Price", e.RowIndex].Value) *
Convert.ToInt32(dg_invoices_items["Amount", e.RowIndex].Value));
虽然我不能测试任何代码那一刻,所以这可能不起作用。
它没有工作,因为dg_invoices_items [e.RowIndex,“数量”]没有采取字符串参数,尽管我试图从0开始索引,我仍然得到相同的例外。 –
应该是这样,但专栏第一:http://msdn.microsoft.com/en-us/library/ms158657.aspx –
哦,你必须切换它们,列第一,将在我的文章中编辑此。 – MrFox