none
datalist 绑定pagedatasource,数据库列为空值异常,无法转换指定类型 RRS feed

  • 问题

  • 我用一个datalist绑定一个pagedatasource,但是从数据库里面读出来的数据存在空值的列,就出现了下面这种情况,如果不用pagedatasource来指定objectdatasource的数据源就没有出现异常!现在怎么办呢?


    指定的转换无效。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.InvalidCastException: 指定的转换无效。

    源错误:

    行 1017:            get {
    
    行 1018:                try {
    
    行 1019:                    return ((global::System.DateTime)(this[this.tableRoutes.StartTimeColumn]));
    
    行 1020:                }
    
    行 1021:                catch (global::System.InvalidCastException e) {

    源文件: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\travel\90ed0754\b1f05c99\App_Code.birvcall.3.cs    行: 1019

    2009年5月21日 1:19

答案

全部回复

  • 你好,

    在数据库中出现空值的列加上默认值。
    DatIn DateTime Default GetDate()

    谢谢!
    邹俊才
    2009年5月21日 1:53
    版主
  • 不单只是这一列,其他的空列也是这样.其他的空列没办法就该了默认值,但是有些列加默认值不好,有没有不加默认值可以解决的办法呢?出现异常的代码好像是pagedatasource类里面的,不知道怎么进去!

    2009年5月21日 1:57
  • 那就代码判断啦,如果是空值就不要进行类型转换嘛,输出空值string.Empty。
    邹俊才
    2009年5月21日 2:04
    版主
  • 我用的是objdatasoure做为数据源的,在业务逻辑层有个方法是返回一个pagedatasource的,objdatasource就是用这个方法获取数据,上面出错的代码不是我自己写的,应该是pagedatasource里面的属性,所以我不知道如何进去出现异常的那段代码进行修改.

    2009年5月21日 2:09
  • 你好,如果是控件在绑定数据的时候,会有默认值选项的,不知道你有没有注意,你可以在绑定的时候设置一下,谢谢!
    邹俊才
    2009年5月21日 2:13
    版主
  • 生成的时候是可以通过的,但是在运行的时候就出异常,我找不到那段出错的代码.能不能如何可以定位到那里?

    2009年5月21日 2:38
  • 这个错误是运行时的错误,编译是检查不出来的,我觉得这个问题应该还是把注意力放在设置上,这个问题是很常见的,微软不好做一个这么没有防御性的东西出来用的。

    生成的页面是临时的,可以找出来,但是无法修改!
    邹俊才
    2009年5月21日 2:45
    版主
  • 如果用的是数据集的话,建议升级到VS2008SP1
    VS2005对空值的支持不好。

    MSMVP VC++
    2009年5月21日 3:27
    版主