1

我有一个GridView(订单)有三列:如何乘数据的GridView两列,并显示在另一列结果

  1. 价格
  2. 数量

我想要将PriceQuantity相乘,并在dataGridview的Total列中显示结果。

请记住:我的dataGridview没有绑定任何表。

我想这个代码来实现我的目标,但没有被退回,这是不工作的手段价值:

private void totalcal() 
{ 
    // is the foreach condition true? Remember my gridview isn't bound to any tbl 
    foreach (DataGridViewRow row in gvSale.Rows) 
    { 
     int a = Convert.ToInt32(row.Cells[3].Value) *  Convert.ToInt32(row.Cells[4].Value); // value is null why?? 
     row.Cells[5].Value = a; 
    } 
} 

这是我点击一个按钮调用方法。 (这是不工作原因在我的代码里面定义)

而且我想知道哪个是适合此计算的Datagridview事件?我不想来计算按钮,点击总量

回答

1

尝试

int.Parse(row.Cells[3].Value.toString()) * int.Parse(row.Cells[4].Value.toString()) 

insted的的

Convert.ToInt32(row.Cells[3].Value) * Convert.ToInt32(row.Cells[4].Value) 

而且你知道你可以随时调用这个方法,如果你不希望它是点击按钮。在gvSale的行填充操作完成后调用它。

编辑

我猜你想在用户进入价格Quanitity做计算。为此,您需要为您的datagridview编写EditingControlShowing方法。这是一段代码。我测试它实际上并得到它的工作。

在主类定义添加该代码后InitializeComponent();线

gvSale.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.gvSale_EditingControlShowing); 

然后添加这个方法:

TextBox tb = new TextBox(); // this is just a textbox to use in editing control 
int Price_Index = 3; // set this to your Price Column Index 
int Quantity_Index = 4; // set this to your Quantity Column Index 
int Total_Index = 5; // set this to your Total Column Index 

private void gvSale_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (gvSale.CurrentCell.ColumnIndex == Price_Index || gvSale.CurrentCell.ColumnIndex == Quantity_Index) 
    { 
    tb = e.Control as TextBox; 
    tb.KeyUp += new KeyEventHandler(Calculate_Total); 
    } 
} 

private void Calculate_Total(object sender, KeyEventArgs e) 
{ 
    int Price_Value = 0; 
    int Quantity_Value = 0; 
    int.TryParse(gvSale.CurrentCell.ColumnIndex != Price_Index ? gvSale.CurrentRow.Cells[Price_Index].Value.ToString() : tb.Text, out Price_Value); 
    int.TryParse(gvSale.CurrentCell.ColumnIndex != Quantity_Index ? gvSale.CurrentRow.Cells[Quantity_Index].Value.ToString() : tb.Text, out Quantity_Value); 
    gvSale.CurrentRow.Cells[Total_Index].Value = Price_Value * Quantity_Value; 
} 
+0

还是空不工作 –

+0

你确定你的_Price_列索引是3和_数量_列索引是4? –

+0

是的,你有没有错误的感谢,但行填充行gridview我没有找到什么是适当的事件 –

相关问题