1

我有一个 rad 网格视图,其中包含与库存变动有关的数据。名为列的值将全部作为负数拉出。我想添加格式,以便从数字中删除负数。

我认为条件格式是我想要这样做的方式,我不确定在满足条件后我想做什么。

ConditionalFormattingObject obj = new ConditionalFormattingObject("MyCondition", ConditionTypes.StartsWith, "-", "", false);
obj.CellBackColor = Color.SkyBlue;
obj.CellForeColor = Color.Red;
obj.TextAlignment = ContentAlignment.MiddleRight;
this.rgv_orderLines.Columns["Moved so Far"].ConditionalFormattingObjectList.Add(obj);

满足条件时,上面的代码会将单元格变为蓝色。但是,我不希望'-'将其删除。

编辑:以下代码给出了所需的结果,但是,如果没有 try catch,它会在任何不包含值的单元格上崩溃。

    private void rgv_orderLines_CellFormatting(object sender, CellFormattingEventArgs e)
    {
        if (e.CellElement.ColumnInfo.Name == "Moved so Far")
        {
            try
            {
                string value = e.CellElement.Value.ToString();
                value = value.Replace("-", "");
                e.CellElement.Value = value;
            }
            catch (Exception ex)
            {

            }
        }
    }
4

1 回答 1

1

ConditionalFormattingObject仅用于设置行样式,即设置字体和颜色。它没有格式化数据值的功能。

理想情况下,您应该首先将数据存储为正数,因为这会使排序、过滤等变得更加容易。但是,如果您确实只想将值显示为正值,则应确保列是 aGridViewDecimalColumn并将列的设置FormatString为类似

"#.###;#.###;0"

这意味着以 3 位小数显示正数和负数的值,0 表示 0。

如果它是一个字符串列,则您的代码可以工作,只需在格式化之前检查 Value 是否为 null:

private void rgv_orderLines_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.CellElement.ColumnInfo.Name == "Moved so Far")
    {
        if(e.CellElement.Value != null)
        {
            string value = e.CellElement.Value.ToString();
            value = value.Replace("-", "");
            e.CellElement.Value = value;
        }
    }
}
于 2018-03-01T13:09:30.473 回答