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

问题描述 投票:1回答: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)
            {

            }
        }
    }
c# radgridview cell-formatting
1个回答
1
投票

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

理想情况下,您应该首先将数据存储为正数,因为这样可以更轻松地进行排序,过滤等操作。但是,如果您确实只想将值显示为正值,则应确保该列为GridViewDecimalColumn并将列的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;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.