【问题标题】:Slickgrid- getting selected cell value , id and field?Slickgrid-获取选定的单元格值、ID 和字段?
【发布时间】:2013-11-11 03:15:53
【问题描述】:

我正在使用 slickgrid,我在 slickgrid 中退出了新用户。我想知道是否有任何功能可以通过它获取所有单元格的完整信息到用户将单击的特定行???我还想在特定单元格中编辑之前和之后获取值,以便我可以测量单元格中的变化。 用于获取我正在使用的活动单元格(即用户单击的位置)

ifkaar_scenarioConfigTable.onClick.subscribe(cellClicked);

我正在检查单元格是我想要的单元格的位置(即允许用户进行编辑/修改的位置),如下所示

function cellClicked(e) {
var cell = ifkaar_scenarioConfigTable.getCellFromEvent(e);
if (col[cell.cell].id == "orderqty") {
    console.log("orderqty pressed");
    }
}

这工作正常,即当我单击任何单元格时,它会告诉它是否是“orderqty”,但我想进一步获取它的值和其他单元格的值以计算更改。我已经搜索但找不到任何明确的文章(或者我无法正确理解)。任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    onClick 事件passes the row as an argument

    获取点击行的数据项

    function cellClicked(e, args) {
        var item = grid.getDataItem(args.row);
    }
    

    检查是否在特定列中发生了点击

    function cellClicked(e, args) {
        if (args.cell == grid.getColumnIndex('orderqty')) {
            console.log("orderqty pressed");
        }
    }
    

    您甚至可以将此过滤功能提取到它自己的函数中,并在该列中发生点击时传递回调

    function forColumn(row, cell, columnID, fn) {
        var cellNode = grid.getCellNode(row, cell);
        var dataContext = grid.getDataItem(row);
        if (cellNode && grid.getColumns()[cell].id === columnID) {
            fn.call(this, cellNode, dataContext, row, cell);
        }
    }
    function cellClicked(e, args) {
        forColumn(args.row, args.cell, 'orderqty', function (cellNode, dataContext, row, cell) {
            console.log("orderqty pressed");
        });
    }
    

    编辑前后的值

    要在编辑之前和之后获取单元格的值,您需要在列的编辑器中的 isValueChanged 函数中进行处理。

    【讨论】:

    • 谢谢@Kavun :) 它工作得很好,这就是我要从特定单元格获取数据的方法。谢谢 !现在你能告诉我是否有任何功能可以禁用(使不可编辑)单个单元格???我说的是单个单元格,而不是整个列。我已经实现了一种使完整列可编辑或不可编辑的方法,但是我需要当用户单击特定行时,整行应该(仅该特定行)变得不可编辑。这可能吗?
    • 是的,您需要实现一个自定义的getItemMetadata 函数,如果该列不可编辑,该函数会为该列的编辑器返回 null。即:function getItemMetadata(row) { return { columns: { 'ColumnID': { editor: null } } }; } 或者你可以这样做this way
    【解决方案2】:
    function cellClicked(e) {
      var grid = ifkaar_scenarioConfigTable;
      var cell = grid.getCellFromEvent(e);
      var item = grid.getDataItem(cell.row); // all the data in the row
      if (cell.cell == grid.getColumnIndex('orderqty')) {
        console.log("orderqty pressed");
      }
    }
    

    【讨论】:

    • 谢谢@ibdehold 的回复,但是这个东西已经在工作了,我现在可以通过我提到的方法获取列的名称(即我可以检查点击了哪一列)我想获取该特定单元格的值(即在 orderqty 单元格中可能是 1000 或 500)。所以我问是否有任何内置方法,例如 grid.getColumnIndex('orderqty').value;获取特定单元格的值?
    • @Omar grid.getDataItem(500).orderqty 或 grid.getDataItem(1000).orderqty。
    • 感谢@idbeHold 它很有用:)
    【解决方案3】:

    如果您从其他控件(如 .点击按钮

    var selectRow = gridInstance.getSelectedRows();
    alert(gridInstance.getDataItem(selectRow).columnName)
    

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 2011-05-11
      • 2012-01-06
      • 1970-01-01
      • 2015-09-21
      • 2013-04-28
      相关资源
      最近更新 更多