winfrom datagridview怎么自定义Columns[i].DefaultCellStyle.Fo

.Net技术 码拜 9年前 (2016-06-01) 1006次浏览
格式化能否实现:判断数据value能否大于10000,大于等于一万的除以10000加“万”字,小于的显示原始数据,数据均保留两位小数?
如:double d1 = 158622   输出:15.86万
double d2 = 562.1   输出:562.10
原因是排序的时候需要取原始数据比较,所以在datagridview展示的时候进行格式化展示,就不影响比较的原始数据,或有什么更好的思路可以给参考下
解决方案

5

string.Format(“{0:0.00万}”, number/10000);
这样保留两位小数,但是你计算的时候,两位小数后面的就损失掉了。
既然有这样的需要,为什么不在实体类里面多加一个字段来作为“显示值” ,与其每次使用的时候都去转换一下,不如取数据的时候就生成一个带“万”值专门用来显示。

15

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

假如数据从数据库里面加载出来的你可以直接用SQL 的case when 来处理,或如一楼所说的遍历你的数据源加上if判断

不是数据库取数据,直接绑定BindingList<实体类>,而且不能用CellFormatting事件,就是要么直接设置列的DefaultCellStyle.Format,要么其他的实现方法保证显示、排序都正常

那你是不是可以对实体类进行一下简单的处理呢?

怎么处理能保证显示和排序都没问题,新手表示真的晕了,求指点

假如你是按照这一列数据进行排序的话恐怕就不好对这一个字段在实体类里面进行处理了。假如不是的话就简单了,实体类里面添加一个方法,给你一个本人以前处理的书体类,你试着套用一下。

  public int CheckState
        {
            get { return checkState; }
            set
            {
                if (checkState != value)
                {
                    checkState = value;
                    RaisePropertyChangedEvent("TCheckState");
                }
            }
        }
        public string TCheckState
        {
            get
            {
                if (checkState == 0)
                {
                    return "未审核";
                }
                else
                {
                    return "已审核";
                }
            }
        }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明winfrom datagridview怎么自定义Columns[i].DefaultCellStyle.Fo
喜欢 (0)
[1034331897@qq.com]
分享 (0)