繁体   English   中英

R Shiny DT :: renderDataTable卡在一个重叠的“Processing ...”横幅上

[英]R Shiny DT::renderDataTable stuck with an overlaid “Processing…” banner

即使已经处理了数据表并且数据显示在横幅后面,我的DT数据表也有一个覆盖它的横幅,上面写着“正在处理...”。 横幅不会消失,它让我疯狂。

愚蠢的F%&*处理横幅

我的应用程序的某些用户想要使用已弃用的shiny :: renderDataTable()的列特定搜索功能,所以我在某些选项卡上运行了data ::frames的shiny :: renderDataTable(),而在其他选项卡上运行了DT :: renderDataTable()标签。

我正在使用R-Portable(Windows 7),因为应用程序需要部署到地板上的相关利益相关者...所以除非你使用R-Portable,否则我不相信你会完全重现环境我正在运行...但这看起来像是一个AJAX问题,所以也许有洞察力的人可以在没有“再现”错误的情况下给出答案。 此外,这个Shiny App中至少有1500行代码,所以我正在尽我所能来解释这个问题,而不会留下太多的混乱。

在功能方面,我的应用程序中的所有功能都完美无缺......我正在使用以下所有软件包,包括shinyBS(bootstrap)和闪亮主题,将所有主要功能设置为global.R文件:

library(shiny)
library(shinyBS)
library(shinythemes)
library(RODBC)
library(ggplot2)
library(gridExtra)
library(Hmisc)
library(stringr)
library(data.table)
library(DT)

我使用一个函数创建我的反应数据表对象,该函数使用RODBC从我们的SQL数据库调用...我有一个操作按钮,一个文本输入,而reactive()脚本调用函数AttrInfo()返回一个数据。帧。

TriInfo = reactive({
  input$UpdateTBAtt
  if(input$UpdateTBAtt == 0) return(NULL)
  isolate(withProgress(message = "Searching for Credit Attribute", 
                     value = 0, {
                       AttrInfo(input$TriAttr)
                     }))
})

我的渲染数据表的代码遵循DT指南:

 output$TriLDD <- DT::renderDataTable({
   req(input$UpdateTBAtt)
   DT::datatable(TriInfo(),options = list(paging=FALSE,searching=FALSE))
 })

我的ui.R文件调用此对象:

 shinyUI(fluidPage(
     list(tags$head(HTML('<link rel="icon", href="RosiePageICON.png", 
                  type="image/png" />'))),
     div(style="padding: 1px 0px; width: '100%'",
       titlePanel(title="", windowTitle="Rosetta")), 
     navbarPage(theme = shinytheme("spacelab"),title = div(img(src="ReadyRosie_Logo6.png"),""),
tabPanel("Tri-Bureau Attributes",
    sidebarLayout(
        sidebarPanel(width = 3,
            actionButton(inputId = "UpdateTBAtt",label = "Get Attribute"),
            textInput("TriAttr","Credit Attribute:", value = "")),    
        mainPanel(width=9,
            tabsetPanel(id = "TB",
                tabPanel(title = "Check Tables",
                     p("Here's the Definition:"),
                     dataTableOutput(outputId = "TriLDD")))))))))

所以我终于找到了隐藏在jQuery库中的解决方法......如果答案是一个简单的选项,有时它不需要可重现的代码......

一般来说,当gl :: renderDataTable命令也在同一个应用程序中获取时,在DT库的jQuery处理中出现了一些问题,这就引起了问题。 无论如何,我发现了一个简单的工作原理。

我去了dataTables jQuery页面并找到了“处理”选项......我刚刚将它添加到选项中:

DT::datatable(TriInfo(),options = list(paging=FALSE, searching=FALSE, processing=FALSE)) 

它终于消失了。

如果有光泽认为你正在使用shiny::dataTableOutput()而不是DT::dataTableOutput()就会发生这种情况。

如果在服务器和ui中明确使用DT::renderDataTable()DT::dataTableOutput() ,则可以避免此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM