2017-08-09 14 views
0

私はセル値に基づいて私の光沢のあるアプリケーションでrhandsontableのフル行を色付けするのに苦労しています。ルーンセンスのセルの値に基づく色の行

次の例では、1つのセルの代わりに完全な行をフォーマットしたいと思います。

library(rhandsontable) 

DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10], 
       small = letters[1:10], 
       dt = seq(from = Sys.Date(), by = "days", length.out = 10), 
       stringsAsFactors = FALSE) 

col_highlight = 2 
row_highlight = c(5, 7) 

rhandsontable(DF, width = 550, height = 300) %>% 
    hot_cols(renderer = " 
       function (instance, td, row, col, prop, value, cellProperties) { 
       Handsontable.renderers.TextRenderer.apply(this, arguments); 

       if(value == 'F' | value == 'f') { 
       td.style.background = 'pink'; 
       } else if(value == 'J' | value == 'j') { 
       td.style.background = 'lightgreen'; 
       } else if(value == 'X' | value == 'x') { 
       td.style.background = 'lightblue'} 

       }") 

答えて

1

レンダラのアイデアは、すべてのセルに別々に適用されるため、同時にセルの値は 'F'と 'f'にすることはできません。すべての行について、列2を選択して値が「F」であるかどうかをチェックし、列3を選択して値が「f」であるかどうかをチェックする必要があります。

rhandsontable(DF, width = 550, height = 300) %>% 
hot_cols(renderer = " 
      function (instance, td, row, col, prop, value, cellProperties) { 
      Handsontable.renderers.TextRenderer.apply(this, arguments); 

      if(instance.getData()[row][2] == 'F' | instance.getData()[row][3] == 'f'){ 
       td.style.background = 'pink'; 
      } else if(instance.getData()[row][2] == 'J' | instance.getData()[row][3] == 'j') { 
       td.style.background = 'lightgreen'; 
      } else if(instance.getData()[row][2] == 'X' | instance.getData()[row][3] == 'x') { 
       td.style.background = 'lightblue' 
      } 
     }") 
+0

ありがとうございます! –

関連する問題