Datagridview Cell使用格式化的数据绑定对象进行验证

时间:2014-10-02 06:50:26

标签: c# validation datagridview

我有一个非常简单的datagridview表示订单商品列表。我有一列代表这个定义的折扣价值:

column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Discount";
column.DefaultCellStyle.Format = "0\\%";
column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
column.Width = 80;
column.Name = "Discount";
dgvOrderDetails.Columns.Add(column);

列折扣形成为" 5%"如果Discount(INT)属性的值为5,但是当我尝试使用CellValidating编辑该值时,它会失败,因为它尝试验证格式化值" int值的5%插入' 5& #39;,如果我尝试使用Cell.Value进行验证,我会得到旧值,而不是新值。

private void dgvOrderDetails_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
        switch(e.ColumnIndex)
        {
            case LINE_DISCOUNT:
                {
                    decimal discount = 0;

                    // Valido que la cantidad haya sido ingresada correctamente
                    if (!Decimal.TryParse(e.FormattedValue.ToString(), out discount)
                        || discount < 0 || discount > 100)
                    {
                        e.Cancel = true;
                        dgvOrderDetails.EndEdit();
                        MessageBox.Show("El porcentaje debe ser un número entero mayor o igual a 0 y menor o igual a 100");
                    }

                    if (OnDiscountModified != null)
                        OnDiscountModified(this, EventArgs.Empty);
                }
                break;
        }
}

0 个答案:

没有答案