如何在RadGridView中更改单元格的值时触发事件?

时间:2015-01-25 03:17:01

标签: c# winforms gridview datagridview radgridview

我正在使用RadGridView来显示正在销售的商品。在同一行中,我还有一个“数量”,“单价”,“总价”栏。

当用户更改“数量”列的值时,我想通过将“数量”乘以“项目价格”来触发将计算“总价”列值的事件

如何添加仅在“数量”列的值更改时才会触发的事件?

我试过这个没有影响

private void radGridView1_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e) {

    double itemPrice = Convert.ToDouble(e.CurrentRow.Cells["Unit Price"].Value);
    int itemQty = Convert.ToInt32(e.CurrentRow.Cells["Qty"].Value);
    double totalPrice = itemPrice * itemQty;

    e.CurrentRow.Cells["Total Price"].Value = totalPrice.ToString();
}

enter image description here

1 个答案:

答案 0 :(得分:2)

订阅CellEndEdit事件(如果需要,可以在构造函数中):

radGridView1.CellEndEdit += (s, e) =>
{
    if (e.Column == radGridView1.Columns["Qty"])
    {
        var row = radGridView1.CurrentRow.Cells;

        row["Total Price"].Value =
            (int)row["Qty"].Value * (decimal)row["Item Price"].Value;
    }
};

如果价格不是小数等,您可能需要添加一些错误处理,并转换为不同的类型。

您也可以将其拆分为单独的方法;用一个简短的方法,我有时会发现这个"内联"方便阅读和维护。 YMMV。