我想在单击单元格时打开一个对话框。我正在使用 dgrid/编辑器。
editor({field: "column1",label: "col1",editor: "text",editOn: "click"})
使用上述代码时,我收到文本框。我想要一个对话框。请告诉我如何获取对话框。我正在使用带有JSONReststore的OndemandGrid来显示网格。
你不需要使用编辑器来触发对话框,在单元格上使用点击事件是可以的:
var grid = new declare([OnDemandGrid,Keyboard, Selection])({
store: Observable(new Memory({data: []}))
}, yourGridConatiner);
grid.on(".dgrid-content .dgrid-cell:click", function (evt) {
var cell = grid.cell(evt);
var data = cell.row.data;
/* your dialog creation at here, for example like below */
var dlg = new Dialog({
title: "Dialog",
className:"dialogclass",
content: dlgDiv //you need create this div using dojo.create or put-selector
});
dlg.show();
});
如果要在将鼠标悬停在该单元格上时显示指针,则可以在renderCell方法中使用"cursor:pointer"设置其样式
来自维基:
editor
- 此列中用于编辑器的组件类型;指定要创建的标准 HTML 输入类型的字符串,或要实例化的 Dijit 小部件构造函数。
您可以提供一个(editor
)一个按钮,该按钮在单击时弹出一个对话框,但这可能意味着两次单击来编辑单元格:一次用于聚焦或进入编辑模式或以其他方式显示按钮,一次用于实际单击按钮。
您也不能打扰编辑器插件并将click
事件处理程序附加到单元格并从那里弹出一个对话框。如果您走该路线,则必须手动将更改保存回商店。
如果我理解正确 - 你可以尝试这样的事情:
function cellFormatter1(value) {
//output html-code to open your popup - ie. using value (of cell)
}
......
{field: "column1",label: "col1", formatter: cellFormatter1 }