【问题标题】:How do I return a specific cell value in SlickGrid?如何在 SlickGrid 中返回特定的单元格值?
【发布时间】:2011-01-22 17:16:45
【问题描述】:

在我的一生中,我似乎无法在 SlickGrid 中返回特定的单元格值。 SO here. 上有一个示例,但这也不起作用。我使用 SlickGrid 教程 #7 作为示例。我要做的就是向返回该单元格值的单元格添加一个点击事件。

注意:我正在通过 JSON 请求加载我的数据,并且一切正常。我的点击事件触发但值未定义。为简洁起见,我将省略我的网格列和选项代码。这是代码,谢谢。所有这一切都是一个很棒的网格。

var sortcol = "id";
    var sortdir = -1;
    $(function () {
        $.getJSON(baseURL() + 'programs', function (data) {
            dataView = new Slick.Data.DataView();
            grid = new Slick.Grid($("#program-grid"), data, programColumns, programOptions);

            grid.onSort = function (sortCol, sortAsc) {
                sortdir = sortAsc ? 1 : -1;
                sortcol = sortCol.field;

                if (sortAsc == true) {
                    data.sort(compare);
                }
                else {
                    data.reverse(compare);
                }
                grid.render();
            };
            grid.onClick = function (e, row, cell) {
                if (programColumns[cell].id == "id") {
                    var x = data[row][cell].field;//This is where I am stuck
                    window.location.href = "http://google.com/" + x;
                }
            }

        });
    });

【问题讨论】:

    标签: javascript jquery slickgrid


    【解决方案1】:

    你快到了,你应该使用 data[row].fieldname。您的数据中有一个名为“字段”的字段吗?

    【讨论】:

    • 我也试过了,但我仍然不确定。有趣的是,当我在 firebug 中调试时,行和列索引号是正确的。只是没有价值。
    • 更新我发现了问题所在。我的 JSON 对象属性带有驼峰式名称(FirstName、LastName 等)。SlickGrid 有一个“id”字段(所有帐户)通常用于标识您想要的字段。就像我的示例一样,“if(programColumns[cell].id == "id")” 指的是我为 SlickGrid 标记为 id 的 SlickGrid id 字段,但通过网络作为 Id 出现。所以简而言之,“data[row].NameAndCaseOfFieldAsItAppearsOverWire”是正确的。感谢您的帮助杰森。 +1
    【解决方案2】:

    如果你使用的是dataView,那很简单:

    // Get the object containing row and cell index of a clicked row.
    var gridObject = roundGrid.getCellFromEvent(e); 
    
    var row = gridObject.row; // get selected row index
    var row_values = roundDataView.getItem(row); // get the row object 
    
    // Get the actual value.
    var cellValue = row_values[roundGrid.getColumns()[gridObject.cell].field]; 
    

    【讨论】:

      【解决方案3】:

      绑定到 onCellChange 事件

      grid.onCellChange.subscribe( function( e, args ) {
      
          console.log( args.item[ grid.getColumns()[ args.cell ].field ] );
      
      } );
      

      退货

      “{some value}”等“这是新更改的值”

      文档

      onCellChange({ row: number, cell: number, item: any })

      Grid Events (onCellChange)

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2019-09-03
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多