使用日期值

时间:2017-06-03 00:43:33

标签: javascript dynamics-crm crm microsoft-dynamics dynamics-crm-online

我正在Microsoft Dynamics CRM中开发。我写了一些javascript代码来自动填充一个带有日期字段年份部分的文本字段。我承认我仍然是javascript开发的新手所以我的代码可能编写得不好。当代码工作并且年份最终填充时,它最初闪烁“1969”一瞬间然后消失。在显示正确的年份之前,我必须按两次保存按钮。我更喜欢1969不会在任何时候显示,并且一旦用户点击保存按钮就能够填充该字段。请指教。谢谢!

var dateString = Xrm.Page.getAttribute('finalizeddate').getValue();
var finalDate = new Date(dateString);
var finalYear = finalDate.getFullYear();
var str = finalYear.toString();
var revisionStatus = Xrm.Page.getAttribute('revisionstatus');

// If status is final, then populate quota year with finalized date year. 
// Otherwise, do not set a value
if (revisionStatus.getSelectedOption().value == final) {
  Xrm.Page.getAttribute('quotayear').setValue(str);
} else { 
  Xrm.Page.getAttribute('quotayear').setValue();
}

1 个答案:

答案 0 :(得分:0)

詹姆斯伍德在评论中指出

  

什么是最终?

Final是JavaScript中的保留字(https://www.w3schools.com/js/js_reserved.asp),因为这是选项集的值应该用引号括起来。

另外,在我的SDK版本中,它表示选项集字段上的getValue()会返回数字,而不是文字的标签选项,因此您可能需要检查自定义项以找到final选项的正确值。

如果有,可以尝试以下代码,看看它是否有效?

var revisionStatus = Xrm.Page.getAttribute('revisionstatus');
var finalOption = '1';      // this is the value of the optionset, not the label

// If status is 'final', then populate quota year with finalized date year.
if (revisionStatus.getSelectedOption().value == finalOption)
{
    var finalizedDate = Xrm.Page.getAttribute('finalizeddate').getValue();
    var year = new Date(finalizedDate).getFullYear().toString();
    Xrm.Page.getAttribute('quotayear').setValue(year);
}
// Otherwise, do not set a value
else
{
    Xrm.Page.getAttribute('quotayear').setValue();
}

另外,作为附注,我认为这些不是您的实际架构名称,因为它们没有您的开发人员前缀?