首页 > 其他分享 >GridViewComboBoxColumn设置DataTypeConverter

GridViewComboBoxColumn设置DataTypeConverter

时间:2024-08-15 15:53:15浏览次数:7  
标签:return context column GridViewComboBoxColumn public 设置 MyColor DataTypeConverter

GridView中的GridViewComboBoxColumn列,如果需要使用TypeConverter将非字符串类型的数据源转换为字符串进行展示,可按如下几步进行:

例如,数据源为如下枚举类型:

public enum MyColor
{
    Red,
    Yellow,
    Green
}
  1. 展示的时候,需要转换为汉字,先定义如下类型,作为GridViewComboBoxColumn的数据源:
public class MyColorItem
{
    public MyColor Value { get; set; }
    
    public string Description { get; set; }
}
  1. 创建转换器:
public class MyColorToStringConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        if(sourceType == typeof(string))
            return true;

        return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        if (value is string color)
        {
            switch (color)
            {
                case "红":
                    return MyColor.Red;
                case "黄":
                    return MyColor.Yellow;
                case "绿":
                    return MyColor.Green;
                default:
                    break;
            }
        }

        return base.ConvertFrom(context, culture, value);
    }

    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        if (destinationType == typeof(string))
            return true;

        return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (value is MyColor color)
        {
            switch (color)
            {
                case MyColor.Red:
                    return "红";
                case MyColor.Yellow:
                    return "黄";
                case MyColor.Green:
                    return "绿";
                default:
                    break;
            }
        }

        return base.ConvertTo(context, culture, value, destinationType);
    }
}
  1. 初始化时设置GridViewComboBoxColumn列的相关属性:
List<MyColorItem> MyColorItemSource = new List<CheckTypeItem>
{
    new MyColorItem{ Value = MyColor.Red, Description = "红" },
    new MyColorItem{ Value = MyColor.Yellow Description = "黄" },
    new MyColorItem{ Value = MyColor.Green, Description = "绿" }
};

var column = radGridView.Columns["MyColor"] as GridViewComboBoxColumn;
if (column != null)
{
    column.DataSource = MyColorItemSource;
    column.ValueMember = "Value";
    column.DisplayMember = "Description";
    column.DataTypeConverter = new MyColorToStringConverter();
}

需要注意的是,如果不定义步骤1中的MyColorItem类型,直接使用List<string>{"红", "黄", "绿"}作为GridViewComboBoxColumn列的DataSource,转换器会报错。

标签:return,context,column,GridViewComboBoxColumn,public,设置,MyColor,DataTypeConverter
From: https://www.cnblogs.com/louzixl/p/18361095

相关文章

  • Uefi ABL读取XBL设置的标志位
    PBL(启动固化程序)->XBL(扩展引导加载程序,负责初始化芯片驱动和核心应用功能。XBL通常会加载一些平台相关的驱动程序,并提供通用接口)->ABL(应用引导加载程序,负责引导操作系统的启动。)高通启用UEFI架构的bootloader,有些时候有些状态值,需要ABL阶段获取.上层思维总是以属性来开端,实......
  • Linux网络设置
    目录一、查看网络接口信息、1.ifconfig命令2.hostname查看主机名称  3.route查看路由表条码 4.netstat查看网路连接情况5.ss命令6.lsof命令 二、测试网络1.ping命令,测试网络连通性 2.跟踪数据包3.域名解析 三、设置网络地址参数1.设置网络接口参数......
  • 假设Sigmund Landers在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟
    /假设SigmundLanders在商业街设置了一个提供建议的摊位,顾客可以购买1分钟,2分钟,或3分钟的建议,为确保交通每个摊位前排队等待的顾客最多10人,用两个队列模拟两个摊位/#include<stdio.h>#include<stdlib.h>#defineMAX_SIZE10typedefstruct{intitems[MAX_SIZE];......
  • 轻松解析高频面试题: 线程设置数量多少合适?带你面试乱杀
    目录一、前言二、线程数和CPU利用率的小测试三、插入io操作四、线程数和CPU利用率总结五、线程数规划的公式 六、真实程序中的线程数一、前言相信很多小伙伴在刷面试题的时候都看到过一个线程数设置的理论:CPU密集型的程序-核心数+1I/O密集型的程序-核心数......
  • Java 代码本地设置Hadoop用户名密码
    在Hadoop环境中,通常使用Kerberos进行身份验证。但在一些开发或测试环境中,我们可能需要在本地代码中设置用户名和密码来模拟或进行简单的测试。虽然这不是一个安全的做法,因为它违背了Kerberos的使用原则,但在某些场景下(如单元测试或本地开发)可能是必要的。方法一:使用Hadoop的API来......
  • 如何在Maya用户界面中设置Arnold摄像机?
    Arnold是随Maya一起提供的、高质量的渲染引擎。Arnold是一款为满足长篇动画和视觉效果电影的需求而构建的高级蒙特卡洛光线追踪渲染器。 那么怎么在Maya用户界面中设置Arnold摄像机呢?要更改Arnold摄像机设置,您需要使用Maya的AttributeEditor中的Arnold标签页(确保您滚动到标......
  • Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画
    bug描述:设置静态IP成功后,机器突然断电,然后在上电开机,发现机器一直卡在开机动画,无法成功进入桌面第一时间抓取日志分析,Log如下:08-1311:26:42.45528032803IEthernetServiceImpl:StartingEthernetservice08-1311:26:42.45728032924DConnectivityService:......
  • Flowable在开启工作流是设置各节点审批人
    该方式用于流程固定并且明确知道每个节点什么人审批。步骤一:指定参数,比如某个节点设置的审批人为${AAAAA}如图:步骤二:在工作流启动前向启动工作流时使用的startProcessInstanceByKeyAndTenantId()方法中填充variables参数,variables中是键值对的形式,其中AAAAA这个参数需要给值......
  • Linux 设置零时proxy 安装数据源
    一、方法一设置临时HTTP代理您可以通过在命令行中临时设置环境变量来指定HTTP代理:exporthttp_proxy=http://proxy-server:portexporthttps_proxy=http://proxy-server:port二、方法二使用SOCKS代理的配置方法设置SOCKS5代理的环境变量:exportALL_PROXY=socks5:......
  • NIFI系列---【设置开机自动重启】
    InstallingasaServiceCurrently,installingNiFiasaserviceissupportedonlyforLinuxandmacOSusers.Toinstalltheapplicationasaservice,navigatetotheinstallationdirectoryinaTerminalwindowandexecutethecommandbin/nifi.shinstallt......