我在Gridx中创建了一个网格,列出了一堆用户。单击网格中的ROW(该行的任何部分)后,会弹出一个对话框,显示有关该用户的其他信息以及可为该用户执行的操作(禁用用户,忽略用户等) - 当其中一个从弹出窗口中选择选项,我想禁用该行。获取行等的逻辑我可以照顾,但我无法弄清楚如何实际制作网格行#34;出现"已禁用以及如何使该行不再可单击。
有一种简单的方法吗?如果您不熟悉gridx,也可以使用适用于EnhancedGrids或其他Dojo网格的解决方案。
答案 0 :(得分:0)
好了,我现在有更多的信息是一个解决方案:
在Grid小部件内或其父代码中保留目前已禁用的所有行的列表。然后在onRowClick监听器上,我会编写如下代码:
on(grid, "onRowClick", function(e) {
if(disabledRows[rowIndex]) {
return;
}
// Do whatever pop up stuff you want and after
// a user selects the value, you can "disable"
// your row afterwards by adding it to the disabled
// list so that it can no longer be clicked on.
var rowIndex = e.rowIndex;
disabledRows[rowIndex] = true;
// This is just some random class I made up but
// you can use css to stylize the row however you want
var rowNode = e.rowNode;
domClass.add(rowNode, "disabled");
});
请注意,domClass是我命名为“dojo / dom-class”的。希望这有帮助!
答案 1 :(得分:0)
这可能不是你正在寻找的东西:
如果你想通过自己的过滤器函数隐藏一行或多行,你可以在DOM中为这些行添加你自己的nodisplay类。在这里,我向您展示了一个函数,用于仅显示在filterlist中可选择的字段/列中包含值的行。
function hideRowFilter(gridId, fieldName, filterList)
{
var store = gridId.store;
var rowId;
store.query(function(object){
rowId = gridId.row(object.id,true).node();
if (filterList.indexOf(object[fieldName]) == -1)
domClass.add(rowId, "noDisplay"); // anzeigen
else
domClass.remove(rowId, "noDisplay"); // verstecken
});
}
CSS:
.noDisplay { display: none; }
因此,我可以通过此调用仅显示myState为3或4的条目:
hideRowFilter(gridId, 'myState', [3, 4]);
请注意,domClass是我命名的" dojo / dom-class"