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

时间:2013-09-20 12:42:37

标签: dojo dgrid

我想在单击一个单元格时打开一个对话框。我正在使用dgrid / editor。

      editor({field: "column1",label: "col1",editor: "text",editOn: "click"})

使用上面的代码时我得到了文本框。我想要一个对话框。请告诉我如何获得一个对话框。我正在使用OndemandGrid和JSONReststore来显示网格。

3 个答案:

答案 0 :(得分:1)

您不需要使用编辑器来触发对话框,在单元格上使用click事件就可以了:

   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();


    });

如果要在鼠标悬停在该单元格上时显示指针,可以使用“cursor:pointer”在renderCell方法中设置样式

答案 1 :(得分:0)

来自the wiki

  

editor - 此列中用于编辑器的组件类型;指定要创建的标准HTML输入类型的字符串,或者用于实例化的Dijit小部件构造函数。

你可以提供(到editor)一个按钮,在点击时弹出一个对话框,但这可能意味着两次点击来编辑一个单元格:一个用于聚焦或进入编辑模式或以其他方式让按钮出现和一个实际点击按钮。

你也可以不打扰编辑器插件并将click事件处理程序附加到单元格并从那里弹出一个对话框。如果您走这条路线,则必须手动将更改保存回商店。

答案 2 :(得分:-1)

如果我理解你 - 你可以尝试这样的事情:

function cellFormatter1(value) {
    //output html-code to open your popup - ie. using value (of cell) 

}

......

{field: "column1",label: "col1", formatter: cellFormatter1 }