解决方案 »

  1.   

    你的 datatable_model 中本来就不应该有“sex列”,只应该有“CustomerSex列”。先调试数据,不要管界面。
      

  2.   

    如果 仅仅考虑显示出来,为何不适用 Combobox
      

  3.   

    用Combobox 是个不错的选择,你还可以用 datagridview 的cellFormating 事件进行修改
      

  4.   

    这儿给楼主说一个枚举处理方式 
    定义一个枚举属性类 
    在枚举里增加这个属性如:
    [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
        public class EnumAttribute : Attribute
        {
            private string _name;
            private string _description;        /// <summary>
            /// 枚举名称
            /// </summary>
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }        /// <summary>
            /// 枚举描述
            /// </summary>
            public string Description
            {
                get { return _description; }
                set { _description = value; }
            }        /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="name">枚举名称</param>
            public EnumAttribute(string name)
            {
                this.Name = name;
            }        /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="name">枚举名称</param>
            /// <param name="description">枚举描述</param>
            public EnumAttribute(string name, string description)
            {
                this.Name = name;
                this.Description = description;
            }
        }在定义枚举的时候 加上属性
     /// <summary>
            /// 作者
            /// </summary>
            [EnumAttribute("writer_text|author_e|showwriter", "作者")]
            A = 4,        /// <summary>
            /// 第一作者
            /// </summary>
            [EnumAttribute("firstwriter", "第一作者")]
            F = 5再去定义一个枚举操作公共类:EnumUtils
     /// <summary>
            /// 用于缓存枚举值的属性值
            /// </summary>
            private static readonly Dictionary<object, EnumAttribute> enumAttr = new Dictionary<object, EnumAttribute>();/// <summary>
            /// 获取枚举值的名称,该名称由EnumAttribute定义
            /// </summary>
            /// <param name="value">枚举值</param>
            /// <returns>枚举值对应的名称</returns>
            public static string GetName(Enum value)
            {
                EnumAttribute ea = GetAttribute(value);
                return ea != null ? ea.Name : "";
            }        /// <summary>
            /// 获取枚举值的名称,该名称由EnumAttribute定义
            /// </summary>
            /// <param name="value">枚举值</param>
            /// <returns>枚举值对应的名称</returns>
            public static string GetDescription(Enum value)
            {
                EnumAttribute ea = GetAttribute(value);
                return ea != null ? ea.Description : "";
            }/// <summary>
            /// 获取枚举值定义的属性
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            private static EnumAttribute GetAttribute(Enum value)
            {
                if (enumAttr.ContainsKey(value))
                {
                    EnumAttribute ea = enumAttr[value];
                    return ea;
                }
                else
                {
                    FieldInfo field = value.GetType().GetField(value.ToString());
                    if (field == null) return null;
                    EnumAttribute ea = null;
                    object[] attributes = field.GetCustomAttributes(typeof(EnumAttribute), true);
                    if (attributes != null && attributes.Length > 0)
                    {
                        ea = (EnumAttribute)attributes[0];
                    }
                    enumAttr[value] = ea;
                    return ea;
                }
            }
    OK 可以处理的需求了 代码只是部分操作 自己需要什么操作自己加 比如获取定义的枚举对象里有哪些枚举 等等
      

  5.   

    感谢各位的帮助,最终使用 sql 语句 直接返回字符串了
      select name, sex = case sex when 1 then‘男’ wen 0 then‘女’end ,age。
      原来实体模型并不参与数据重构。