radgridview 上的条件格式以删除 '-' - C#

Conditional formatting on a radgridview to remove '-' - C#

我有一个 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)
            {

            }
        }
    }

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

理想情况下,您应该首先将数据存储为正数,因为这样可以更轻松地进行排序、过滤等操作。但是,如果您只想将值显示为正值,则应确保该列是 GridViewDecimalColumn 并将该列的 FormatString 设置为类似

的内容

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

这意味着显示小数点后三位的值,正数和负数都显示,0表示0。

如果它是一个字符串列,您的代码将起作用,只需在格式化之前检查值是否为空:

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;
        }
    }
}