【问题标题】:Datecolumn: Unable to cast object of type 'System.DateTime' to type 'System.String'Datecolumn:无法将“System.DateTime”类型的对象转换为“System.String”类型
【发布时间】:2017-07-30 09:06:02
【问题描述】:

我有一个 sql 表,其中有一列 [WelcomeSent],类型为:日期时间并且此列中存在空值

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

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.DateTime”类型的对象转换为类型 'System.String'

有人知道我该如何解决这个问题吗?

【问题讨论】:

  • 在将结果声明为数据源之前,您是否通过调试检查了结果中的值?它们只是日期时间值吗?
  • 这是 WelcomeSent 连续的内容:2017-03-09 00:00:00.000
  • var result = ((from i in dc.vw_Users where i.id == id select i).toString()).ToList();你能试试这样,请说它是否给出相同或另一个错误。
  • @ReadyFreddy 我试过了,我没有收到任何错误,但现在网格中没有内容,只有空行
  • 还有为什么你的专栏有 hidden="true" 属性。你能不能把它删除并尝试这样。可能如果您没有收到任何错误,您将数据传递到列,但我认为这种隐藏使其不可见。

标签: c# sql datetime extjs


【解决方案1】:

您需要在 linq 结果对象中转换 toString() 日期值,然后再分配到 storeUsers.DataSource = result;

【讨论】:

  • 你能告诉我我该怎么做吗?我试过 var result = (from i in dc.vw_Users where i.id == id select i).ToList().ToString();没有运气......但我的网格列是DateColumn。不应该像现在这样工作吗?
  • 你需要在结果对象中有一些属性。你能发布什么结果,例如出生日期吗?
  • 这是 WelcomeSent 连续的内容:2017-03-09 00:00:00.000
  • 首先您的 WelcomeSent 属性必须是字符串。
  • 否则您需要在 foreach 循环中捕获结果列表中每个项目的 WelcomeSent 属性并将其转换为字符串。
【解决方案2】:

通过分别获取每一列并解析日期列来解决它:

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
    };

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2014-03-14
    • 2017-11-24
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多