1

我有一个 rallygrid,我在上面填充数据和一些自定义列。我希望将其中一列作为与投资组合项目相关联的月份或季度的纯文本表示形式,基于其计划的开始和结束日期:

{
    text: 'Date Range',
    dataIndex: 'PlannedStartDate',
    renderer: function(value, meta, record) {
        var date = new Date(value);
        return App._getSpan(new Date(record.data.PlannedStartDate), new Date(record.data.PlannedEndDate));
}

_getSpan() 方法有效,并且当页面加载时网格被很好地填充。但是,当我在保存更改时对网格中显示的其他字段之一(所有者、名称等)进行内联编辑时,记录会更新并且不会获取 PlannedStartDate 和 PlannedEndDate 字段,所以当我调用

new Date()

在他们身上,它会将时钟拨回时间 0(1969 年 12 月 31 日)。

我对此的混乱解决方案是检查是否在渲染器函数中设置了开始和结束日期,如果没有,则使用另一个查询通过其 ID 查找我正在查找的对象并获取所有必要的信息。我开发的查询有一个错误,由于某种原因,这意味着当我更改其他字段时,它会保存状态,但不会尝试使用错误数据再次呈现该列!

但是,在代码中出现错误以使其正常工作是非常反直觉的 - 这里发生了什么?

4

1 回答 1

0

解决方案是使用 record.raw 而不是 record.data - raw 中的信息保持不变

{
    text: 'Date Range',
    dataIndex: 'PlannedStartDate',
    renderer: function(value, meta, record) {
        var date = new Date(value);
        return App._getSpan(new Date(record.raw.PlannedStartDate), new Date(record.raw.PlannedEndDate));
}
于 2013-08-23T21:03:09.550 回答