我有一个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);
上述代码会在满足条件时将单元格变为蓝色。但是,我不想要这个,我希望删除'-'
。
编辑:以下代码给出了所需的结果,但是,如果没有尝试捕获它会在任何不包含值的单元格上崩溃。
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)
{
}
}
}
答案 0 :(得分: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;
}
}
}