我希望得到一些关于如何在Dynamics CRM 365(本地(可编辑网格中进行setValue
的指示:
无论我尝试什么,我都无法更新网格中的值。此代码获取属性的引用,但 setValue 似乎对网格没有影响。
function updateDocsOK(ctlName, grdName, attributeName) {
var selectedRow = null;
var attributeColl = null;
var twoOptionValue = 0;
try {
//This is the Yes/No value in the dropdown
var ctlValue = Xrm.Page.getAttribute(ctlName).getValue();
if (ctlValue) {
twoOptionValue = 1;
}
//get the selected rows - use the getControl method and pass the grid name.
selectedRow = Xrm.Page.getControl(grdName).getGrid().getRows();
//loop through rows and get the attribute collection
selectedRow.forEach(function (row, rowIndex) {
var att = row.getData().getEntity().attributes.getByName(attributeName);
//This setValue does not work on a two-option
if (att) {
console.log(att.getValue());
att.setValue(twoOptionValue);
console.log(att.getValue());
}
//This setValue does not work on a text field
att = row.getData().getEntity().attributes.getByName("new_testtext");
if (att) {
att.setValue("hello");
}
});
} catch (e) {
Xrm.Utility.alertDialog(e.message);
}
}
您应该选择传递执行上下文的选项,并使用executionContext.getFormContext()
获取可编辑网格中的当前行。
function updateDocsOK(executionContext) {
var entityObject = executionContext.getFormContext().data.entity;
var att = entityObject.attributes.getByName("new_testtext");
att.setValue("hello");
}
不能在可编辑网格上使用 Xrm.Page 命令。在我的示例中,我将 想要设置概率值。
在表格上类似的东西
Xrm.Page.getAttribute(“closeprobability”).setValue(80)
会做的 把戏。但这不适用于可编辑的网格。相反,我需要使用已发布的新方法 Dynamics 365 (getFormContext(.
getFormContext 返回表单 (Xrm.Page( 或 可编辑网格 (网格行(。这意味着我们现在可以拥有将 在这两种情况下工作。
阅读更多
getEventSource 可用于 Dynamics CRM 365 可编辑网格获取或设置值:
var year;
var weekNumber;
var selectedRow = null;
var attributeColl = null;
function dateChange(eContext) {
debugger;
var nameAttr = eContext.getEventSource();
var attrParent = nameAttr.getParent();
var startDateField = attrParent.attributes.get("new_startdate");
var date = startDateField.getValue();
//Get week number
var currentWeekNumber = parseFloat(date.getWeek());
//Get full year
const dt = new Date(date);
var currentyear = parseFloat(dt.getFullYear());
//set week value
var new_weeknumbercstField = attrParent.attributes.get("new_weeknumbercst");
new_weeknumbercstField.setValue(currentWeekNumber);
// Set year value
var new_yearcstField = attrParent.attributes.get("new_yearcst");
new_yearcstField.setValue(currentyear);
}
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(), 0, 1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
}