2011-01-22 202 views
1

私の人生にとって、私はSlickGridで特定のセル値を返すようには思えません。 SO here.の例がありますが、これはうまくいきませんでした。私はSlickGridチュートリアル#7を私の例として使用しています。私がしようとしているのは、そのセル値を返すクリックイベントをセルに追加することだけです。SlickGridで特定のセル値を返すにはどうすればよいですか?

注: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

ほとんどの場合、データ[行] .fieldnameを使用する必要があります。あなたのデータに "フィールド"と呼ばれるフィールドがありますか? onCellChangeイベントに

// 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]; 
+0

私もことを試してみましたが、私はまだ未定義得ます。面白いことに、私がファイヤーバグでデバッグするとき、行と列のインデックス番号が正しいです。価値がない。 – trevorc

+0

更新私は問題が何かを理解しました。私のJSONオブジェクトのプロパティは、ラクダのケース名(FirstName、LastNameなど)で結ばれています。SlickGridは、(すべてのアカウントによって)通常は必要なフィールドを識別するために使用される「id」フィールドを持っています。私の例のように "if(programColumns [cell] .id ==" id ")"はSlickGridのIDフィールドを参照しています。だから要するに "data [row] .NameAndCaseOfFieldAsItAppearsOverWire"は正しいです。助けてくれてありがとうJason。 +1 – trevorc

0

あなたがデータビューを使用している場合、それは簡単です"これは新たに変更された値です"

ドキュメント

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

Grid Events (onCellChange)

0

バインド

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

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

}); 

戻り

"{いくつかの値}" など:

関連する問題