簡體   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