我是Dojo的新手。 我有一个" FullEditable"网格,有很多列,其中一个是小部件,它是一个ToggleButton。此网格用于显示购买的详细信息,因此每行代表销售的产品。当我单击其中一列中的按钮时,它会启动产品(对话框)浏览器,然后将该产品的数据传递给网格。经过一些工作后,我设法显示按钮,并能够根据从该对话框收到的row.data.FIELD值设置它的标签。
但是现在我正在编辑那次购买,我需要能够做同样的事情,以便能够从预装数组中加载数据(" detalle")(因为它' s标签)进入togglebutton,但似乎没有任何工作,甚至没有直接分配小部件或行数据或任何东西。 这是我的代码片段:
e
每当我通过更改事件使用" cell.element.widget.set(' checked',boolean)设置值;"我从编辑器收到一条错误消息,当它试图获取一个单元但变量为null时,它就崩溃了。
"标签"的值和"价值"对于小部件,row.data en cell是完美设置的,但是网格显示" emptyValue"小部件的值,而不是实际设置的值。
答案 0 :(得分:0)
AFAIK,更改网格数据的最佳方法是更新与网格关联的商店/集合,然后只调用grid.refresh()
。新数据将自动加载。
声明cell.row.data.Moneda = detalle.MonedaItem
实际上正在更改商店中的数据。在此之后只需refresh
网格即可完成!
永远不要尝试直接在网格DOM元素中设置内容。始终使用商店renderCell
和renderColumn
。这将确保引用商店的商店和网格属性的一致性。
答案 1 :(得分:0)
我终于设法通过renderCell得到了我需要的东西:
,{
id: 'Moneda',
field: 'Moneda',
label: "Moneda",
renderCell: function (object, value, node, options) {
try {
var button = new ToggleButton({
node: node,
isWidgetInGrid: true,
parameterName: 'codigoMoneda',
label: object.Moneda,
showLabel: true,
onChange: function(newValue){
var grid = this.getParent();
var row = grid.row(this.node);
var data = row.data;
if(this.get('label') === 'CLP')
{
data.Moneda = 'UF';
this.set('label','UF');
this.set('value', 'UF');
}
else
{
data.Moneda = 'CLP';
this.set('label','CLP');
this.set('value', 'CLP');
}
grid.getParent().getParent()._calcularTotales();
}
});
node.appendChild(button.domNode);
}
catch (ex) {
Debug.log(this.declaredClass, arguments, ex);
}
},
emptyValue: 'CLP',
autoSave: true
}