如何在单击Dojo Dgrid中的单元格时打开对话框或弹出窗口



我想在单击单元格时打开一个对话框。我正在使用 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 }

最新更新