erqie

学无止境,唯缺光阴;理虽无难,贵在有恒。

导航

IBatis.net学习笔记_gridview不自动生成nullable列的问题

Posted on 2007-05-31 23:45  而且  阅读(405)  评论(0编辑  收藏  举报
经过试用发现一个问题:
       当在类里使用泛型来处理nullable的字段时,如果对用databind方法进行数据编写的如gridview,formview,detaisview等控件.采用自动生成列将得不到实体类里声明为nullable的列值.但是在程序里通过entity.attribute()是可以得到这个字段里的值的.这就说明问题不在于实体类或者IBtais上,而在于gridview控件上.
       通过搜索网页,发现gridview有一个IsBindableType的方法,用于检测并处理绑定列的类型,而默认的此方法并未处理nullable类型的字段,所以造成gridview不能自动生成列.给出的解决方法是重写IsBindableType方法:
public static bool IsNullableType(Type type)
{
    return type.IsGenericType &&
      type.GetGenericTypeDefinition() == typeof(Nullable<>);
}
通过上面的方法来检测nullable类型.
public override bool IsBindableType(Type type)
{           
    return NullableHelper.IsNullableType(type)
      || base.IsBindableType(type);
}