Datecolumn:无法转换类型&System;日期时间'输入' System.String'

时间:2017-03-09 11:34:39

标签: c# sql datetime extjs

我有一个带有[WelcomeSent]列的sql表,类型为:Datetime ,此列中存在空值

我有这段代码从我的数据库中获取值并将它们存储在网格中:

var result = (from i in dc.vw_Users where i.id == id select i).ToList(); //error line
storeUsers.DataSource = result;
storeUsers.DataBind();

在我的网格中有一栏:

<ext:DateColumn runat="server" ID="ColUsersWelcomeSent"     DataIndex="WelcomeSent"     Text="WelcomeSent"  Width="80"  Format="dd/MM/yyyy" Hidden="true"></ext:DateColumn>

但是当我运行它时,我收到了这个错误:

  

无法投射类型&System;日期时间&#39;输入   &#39; System.String&#39;

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

在storeUsers.DataSource = result中分配之前,你需要在linq结果对象中转换toString()你的日期值;

答案 1 :(得分:0)

通过分别获取每个列并解析Date Column来解决它:

var result = from i in dc.vw_Users
    where i.id == id
    select new
    {
        i.UserId,
        i.id,
        i.SiId,
        i.FullName,
        i.UserName,
        i.RoId,
        i.Ro,
        i.Email,
        WelcomeSent =
            i.WelcomeSent != null && i.WelcomeSent.ToString().Length > 0
                ? DateTime.Parse(i.WelcomeSent.ToString())
                : new DateTime(),
        i.Signed,
        i.IsPri,
        i.IsApproved,
        IsLocked = i.IsLockedOut,
        i.LoginStatus,
        i.LastLoginDate,
        i.SignRights,
        i.LastPasswordChangedDate,
        i.FailedPasswordAttemptCount,
        i.CompleteDate,
        i.AccessDate,
        i.CertificationDate,
        i.CertificateId,
        i.progress
    };