R Shiny:gvistable无法调用所选行

时间:2016-04-13 11:19:32

标签: r shiny googlevis shinydashboard

我正在尝试识别闪亮仪表板中使用的gvistable中的选定行。我已按照演示(EventListener)规定的步骤操作,但由于某种原因,我无法识别所选行。

这是一个简化和修改过的代码,可以让问题清晰明了。

    library(shiny)
library(googleVis)
ui <- dashboardBody(box(title = "data table",width = 4, htmlOutput("dt")),
      verbatimTextOutput("row"))

server <- shinyServer(function(input,output,session){
  datatable <- data.frame("symbol" = c("alpha", "beta", "gamma"))

  output$dt <- renderGvis({
    d <- gvisTable(datatable, chartid = "mytable", options = list(gvis.listener.jscode= "
      var sel = chart.getSelected();
      var row = sel[0].row;
      var text = data.getValue(row,1);
      Shiny.onInputChange('text');
      "))
  })
  output$row <- renderPrint({
    input$text
  })
})
shinyApp(ui, server)

我总是在verbatimtextoutput上获得NULL输出。任何人都可以指出我在这里犯的错误吗?! 我通过论坛尝试了大量搜索,但找不到解决方案。

1 个答案:

答案 0 :(得分:0)

我可能根本就没有问过这个问题,因为解决方案非常简单。但是,这可能对其他用户有用,当你有其他图形或函数使用gvistable中的对象作为输入时,这是一个很酷的选择。 这是修复

  string filePath = @"C:\MyDir\MySubDir\myfile.ext";
  string file2 = "otherfile.txt";

  // C:\MyDir\MySubDir\otherfile.txt
  string result = Path.Combine(Path.GetDirectoryName(filePath), file2);

这有所不同,Shiny.onInputChange有两个参数,我错过了第二个参数。

希望这有助于其他人尝试类似的东西。 顺便说一句,另一种可能的解决方法是使用shinyjs。无论如何我也会尝试。