none
datagridview的列的DefaultCellStyle.Format设置问题 RRS feed

  • 问题

  • 已经自定义了format,怎么设置给DefaultCellStyle.Format,除了在cellformating事件中格式化数据,还有什么思路可以让数据格式化显示,而且排序的时候获取原始数据排序,
    2016年8月9日 2:52

答案

全部回复

  • dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c"

    dataGridView1.Columns["Last Prepared"].DefaultCellStyle.Format = "y";

    参考

    https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcellstyle.format%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年8月9日 3:32
  • 我是自定义的格式化,一个类实现了IFormatProvider,ICustomFormatter,要把自定义的用到DefaultCellStyle.Format,不是用系统自带的格式化标准
    2016年8月9日 4:46
  • 1 设定column.DefaultCellStyle.FormatProvider 为自定义格式的对象实例

    2 处理事件CellFormatting

    void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
       
    if (e.CellStyle.FormatProvider is ICustomFormatter) {
            e
    .Value = (e.CellStyle.FormatProvider.GetFormat(typeof(ICustomFormatter)) as ICustomFormatter).Format(e.CellStyle.Format, e.Value, e.CellStyle.FormatProvider);
            e
    .FormattingApplied = true;
       
    }
    }

    public class MyEnumFormatter : IFormatProvider, ICustomFormatter {

       
    public object GetFormat(Type formatType) {
           
    if (formatType == typeof(ICustomFormatter))
               
    return this;
           
    else
               
    return null;
       
    }

       
    public string Format(string format, object arg, IFormatProvider formatProvider) {
           
    return ((NameOfEnumType)Convert.ToInt32(arg)).ToString();
       
    }

    }

    来自

    http://stackoverflow.com/questions/3551575/using-a-custom-formatter-in-a-datagridview


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年8月9日 8:27
  • 看来还是要用CellFormatting事件,这个事件确实挺方便,那可以有办法像系统标准格式化那样,一段字符串就代表格式化标准吗?如直接设置“N”这样就能格式化,或者设置某个字符串就代表自定义的格式化?
    2016年8月15日 3:40
  • 关注此链接可能对你有帮助

    https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(v=vs.110).aspx

    2016年8月15日 5:16