1

私の一生の間、SlickGridで特定のセル値を返すことはできないようです。ここにSOの例があります。しかし、これも機能しませんでした。例として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;
                }
            }

        });
    });
4

3 に答える 3

4

もうすぐです。data[row].fieldnameを使用する必要があります。データに「フィールド」というフィールドがありますか?

于 2011-01-23T00:30:32.540 に答える
0

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]; 
于 2014-04-10T17:00:28.523 に答える
0

onCellChangeイベントにバインドします

grid.onCellChange.subscribe( function( e, args ) {

    console.log( args.item[ grid.getColumns()[ args.cell ].field ] );

} );

戻り値

「{somevalue}」など「これは新しく変更された値です」

ドキュメント

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

グリッドイベント(onCellChange)

于 2016-07-28T16:14:40.670 に答える