无法让 setValue 在动态 CRM 可编辑网格上工作



我希望得到一些关于如何在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);  
}

最新更新