【问题标题】:dgrid and DateTextBoxdgrid 和 DateTextBox
【发布时间】:2012-11-22 07:50:02
【问题描述】:

我正在尝试让 dgrid OnDemandGrid 与 dijit.form.DateTextBox 作为编辑器一起使用。数据通过 JSON 馈送到 OnDemandGrid。最初,我试图从 MySQL 数据库中输入原始格式的日期(例如 YYYY-MM-DD HH:MM:SS),但是当 DateTextBox 似乎无法解析该字符串时,我尝试只输入日期(例如 2012-11-20)。但是,这也失败了。

所以,我的主要问题是让 DateTextBox 处理日期信息。第二个问题是如何处理时间信息,因为 DateTextBox 不能编辑时间。我目前的方法是,当我拆分 SQL 日期字符串时,我将时间作为 dijit.form.TimeTextBox 的单独列提供给 dgrid。这似乎是一个混乱的解决方案,所以我愿意接受建议。

这是我的网格代码:

var grid = new declare([OnDemandGrid, Editor, Keyboard, Selection])({
    store: store,
    query: {aid: "1900", action: "objectListGenerator2" },
    bufferRows: 40,
    loadingMessage: "Loading...",
    columns: [
        {field: "oid", label: "Object ID"},
        Editor({field: "startDate", name: "Start Date", editorArgs: { selector: 'date', datePattern: 'yyyy-mm-dd', locale: 'en-us' }}, DateTextBox, "click"),
        Editor({field: "startTime", name: "Start Time"}, TimeTextBox, "click"),
        Editor({field: "endDate", name: "End Date"}, DateTextBox, "click"),
        Editor({field: "endTime", name: "End Time"}, TimeTextBox, "click"),
        {field: "endDateOid", label: "End OID"}
    ],
}, "grid");

这是我的 JSON 源的示例字符串:

[{"content":"2012-11-20 18:12:00","oid":"2112","author":"","endDateOid":"2113","group":"","endTime":"17:59:00","poid":"0","id":null,"startTime":"18:12:00","gmt":"2012-11-22 00:12:43","name":"The Windows 8 Disaster Rolls On","paid":"1900","endDate":"2012-11-21","type":"startDate","startDate":"2012-11-20","cache":"","cachedate":"0000-00-00 00:00:00"},
{"content":"2013-01-01 17:59:00","oid":"2114","author":"","endDateOid":"2115","group":"","endTime":"16:59:00","poid":"0","id":1,"startTime":"17:59:00","gmt":"2012-11-22 00:14:49","name":"The Windows 8 Disaster Rolls On","paid":"1900","endDate":"2013-01-02","type":"startDate","startDate":"2013-01-01","cache":"","cachedate":"0000-00-00 00:00:00"}]

【问题讨论】:

  • 您是以编程方式还是以声明方式创建它?你能提供一个fiddle吗?
  • 以编程方式。明天我会尝试将代码放到 Fiddle 上,但现在将其发布在上面。感谢您的回复!
  • DateTextBox 出现了吗?
  • 一种绝望的尝试可能是将editorArgs.datePattern 从yyyy-mm-ss 更改为yyyy-MM-ss(根据所需的ISO8601/RFC3339 格式)。无论如何,documentation 说访问DateTextBox 的value 属性需要使用本机JavaScript Date-objects 完成。但我认为这不是问题所在,正如dgid 文档所说,DateTextBoxes 可以用作单元格的编辑器(如您所知;))...困难:/
  • 谢谢,@nozzleman!我尝试了格式更改,但似乎无济于事。但是,我发现了一些东西:如果我从列定义中删除“单击”(从而允许立即创建 DateTextBox),则会显示正确的日期。关于为什么会这样的任何想法?顺便说一句,我创建了一个 Fiddle,但 dgrid 似乎没有从它提供的 CDN 版本的 Dojo 加载:jsfiddle.net/tbutler/v9zaL/1。感谢您的帮助!

标签: json dojo dgrid


【解决方案1】:

正如我在 cmets 中所指出的,如果我从列定义中删除“单击”,从而允许立即创建 DateTextBox,则会显示正确的日期。如果稍后添加 DateTextBox,我不确定为什么无法正确解析数据,但至少立即创建它会产生可行的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多