繁体   English   中英

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"

这意味着将值显示为 3 位小数,无论是正数还是负数,0 都显示为 0。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM