【问题标题】:How to open dialog or popup when clicking on a cell in Dojo Dgrid单击 Dojo Dgrid 中的单元格时如何打开对话框或弹出窗口
【发布时间】:2013-09-20 12:42:37
【问题描述】:

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

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

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

【问题讨论】:

  • 那么你想要的是点击按钮并显示一个对话框??

标签: dojo dgrid


【解决方案1】:

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

   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" 设置它的样式

【讨论】:

  • 我在网格中有10列。点击最后一列的单元格时应该触发事件。上面的代码在点击任何行时触发事件。请告诉如何仅在最后一个时触发事件列的单元格被点击了吗?
  • 在委托事件处理程序的选择器中,将 .dgrid-cell 替换为所需列中单元格上的类。例如".dgrid-content .field-column1:click"
  • 是的,Ken 的答案是控制特定列的方式。您可以在创建列时为最后一列添加一个类名,例如,您将其命名为“lastColumn”,然后将其更改为“.dgrid-content .lastColumn:click”
【解决方案2】:

来自the wiki

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

您可以向(editor)提供一个按钮,单击该按钮会弹出一个对话框,但这可能意味着单击两次来编辑单元格:一次聚焦或进入编辑模式,或者以其他方式显示按钮,一次实际点击按钮。

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

【讨论】:

  • 我倾向于认为这里的第二种方法(不使用editor)可能是更自然的方法,因为我们谈论的是一种已经相当间接的输入形式,而不是实际的输入在单元格内输入值。
【解决方案3】:

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

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

}

......

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

【讨论】:

  • 为了插入内联事件处理程序的唯一目的而添加格式化程序并不是执行此操作的最佳方式;理想情况下,格式化程序应该仅用于显示目的,即便如此,在基于列的类应用样式还不够的情况下。请参阅之前的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多