0

fnRowCallback 引数を使用して、データ テーブル内の行全体に色を付けようとしました。効果は機能しますが、他の DT 関数は機能しなくなります。簡単な例を次に示します。

  names <- c("a","b","c","d")
    days <- c(10,5,2,1)

    dat <- data.frame(name=rep(names,days),date=as.Date((Sys.Date()-sum(days)+1):Sys.Date(),origin="1970-01-01"),value=rep(days,days),value2=(rep(days*2,days)))

    datatable(dat,options=list(
    fnRowCallback = JS('function(row,data, iDisplayIndex, iDisplayIndexFull){
    var d = data[2];
    d = new Date(d);
    c = new Date(+new Date - 12096e5);
    if (d > c)
    $(row).css("background-color", "blue");
    }'),
    rowCallback = JS(
    'function(row, data) {
    if (parseFloat(data[4]) > parseFloat(data[3]))
    $("td:eq(4)", row).css("background-color", "green");
    }')
)) %>% formatCurrency(c("value","value2"))

fnRowCallback と rowCallback はどちらも fnRowCallback の効果のみをもたらし、formatCurrency も無視されます。fnRowCallback formatCurrency をコメント アウトすると、rowCallback 引数と一緒に正常に機能します。

これは DT パッケージに問題がある可能性がありますが、私は JavaScript データテーブル ライブラリにあまり詳しくないので、コード内に問題があるか、有効にできないオプションがある可能性があります。

4

1 に答える 1

2

fnRowCallbackDatatable v1.10 の Datatable v1.9 バージョンですrowCallback(情報はこちら)。rowCallbackコード内で基本的に 2 回設定しているため、問題が発生している可能性があります。

すべてのコードを に入れてみてくださいrowCallback:

datatable(dat,options=list(
    fnRowCallback = JS('function(row,data, iDisplayIndex, iDisplayIndexFull){

    }'),
    rowCallback = JS(
    'function(row, data) {
    if (parseFloat(data[4]) > parseFloat(data[3]))
        $("td:eq(4)", row).css("background-color", "green");

    var d = data[2];
    d = new Date(d);
    c = new Date(+new Date - 12096e5);
    if (d > c)
        $(row).css("background-color", "blue");

    }')
)) %>% formatCurrency(c("value","value2"))

関数は、rowCallbackレンダリングされる前に各行に適用されます ( docs here )。

于 2015-11-18T12:51:35.703 に答える