2016-07-20 12 views
6

मैं चमकदार ऐप में विज़ुअलाइज़ करने के लिए 100 से अधिक 000 पंक्तियों के साथ तालिकाओं को संभालने और DT पैकेज (विकास संस्करण 0.1.56) का उपयोग कर रहा हूं।डीटी बटन: स्क्रॉलर डाउनलोड के साथ डाउनलोड बटन केवल कुछ पंक्तियां

इसके अलावा मैं विभिन्न प्रारूपों में डेटा डाउनलोड करने के लिए DT एक्सटेंशन का उपयोग कर रहा हूं: Buttons। हालांकि Scroller एक्सटेंशन भी सक्रिय है, मैं केवल कुछ पंक्तियों को डाउनलोड करने में सक्षम हूं (सभी डेटा नहीं)।

नमूना कोड:

library("shiny") 
library("DT") 

shinyApp(
    ui = fluidPage(DT::dataTableOutput('tbl')), 
    server = function(input, output) { 
    output$tbl = DT::renderDataTable(
     iris,extensions=c("Buttons",'Scroller'),options = list(dom = 'Bfrtip', 
               buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),scrollY = 50, 
               scroller = TRUE 
    )) 
    } 
) 

इसके अतिरिक्त अगर मैं आर में कोड का केवल इस हिस्से चलाने के लिए और दर्शक में datatable मिलता है, मैं आदि कॉपी करने के लिए सभी पंक्तियों में सक्षम हूँ, यह कैसे संभव है?

library("DT") 
datatable(
    iris, 
    extensions = 'Buttons', options = list(
    dom = 'Bfrtip', 
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print') 
) 
) 

मैं कोशिश की है अलग दृष्टिकोण:

  1. scrollY = बदलने ... विकल्प सूची में -> यह काम कर रहा है लेकिन scrollY की संख्या वास्तव में ऐसा सभी डेटा पंक्तियों को प्रदर्शित करने के विशाल हो गया है इसे पूरी तरह से डाउनलोड किया जा सकता है -> अच्छा दृष्टिकोण नहीं, क्योंकि मेरा डेटा डाटाबेस से आता है, मुझे विभिन्न पंक्तियों की संख्या मिलती है और इससे ऐप को अत्यधिक धीमा कर देता है

  2. पृष्ठ लम्बाई विकल्प का उपयोग करना: pageLength = ..., lengthMenu=c(..,..,..,..)

हालांकि चुनने के लिए सभी पर प्रदर्शित नहीं किया जाता विकल्प ...

कोई भी विचार कैसे मैं इस समस्या को हल कर सकते हैं?

  • मैं के बारे मेंdownloadHandler() दृष्टिकोण के बारे में पता कर रहा हूँ, लेकिन मैं DT के माध्यम से यह करने के लिए के रूप में उपलब्ध एक्सटेंशन अच्छा और सुरुचिपूर्ण तरीका है, जो इस तरह के पीडीएफ के रूप में एक ही बार में विभिन्न स्वरूपों में डेटा डाउनलोड करने की अनुमति देता देना पसंद करेंगे , एक्सेल, सीएसवी और प्रिंट।

** मैं पहले से ही एक ही सवाल को देखा है:

Download button downloads only 145 rows in DataTables with Scroller

लेकिन यह DT पैकेज के अर्थ में उत्तर नहीं किया गया है

अग्रिम धन्यवाद

+3

क्या होता है यदि आप 'डीटी :: renderDataTable' में' सर्वर = FALSE' जोड़ते हैं? – Carl

+0

हाय कार्ल, वास्तव में यह पूरी तरह से काम कर रहा है! धन्यवाद! यदि आप इसे उत्तर के रूप में पोस्ट करते हैं तो मैं इसे तुरंत स्वीकार करने जा रहा हूं –

उत्तर

7

मुद्दा यह है कि जब server=TRUE केवल प्रदर्शित होने वाला डेटा क्लाइंट को भेजा जा रहा है। server=FALSE सेट करना क्लाइंट में सभी डीटी सामान प्रस्तुत करता है ताकि सभी डेटा वहां मौजूद हो।

2

यह वास्तव में server = TRUE है जो चाल करता है।

यहां कोड है क्योंकि मेरे जैसे कुछ लोग गलत जगह पर तर्क डाल सकते हैं।

library("shiny") 
library("DT") 

shinyApp(
    ui = fluidPage(DT::dataTableOutput('tbl')), 
    server = function(input, output) { 
    output$tbl = DT::renderDataTable(server = FALSE,{ 
     DT::datatable(iris, 
        extensions=c("Buttons",'Scroller'), 
        options = list(dom = 'Bfrtip', 
            buttons = c('copy', 'csv', 
               'excel', 'pdf', 
               'print'), 
            scrollY = 50, 
            scroller = TRUE) 
    ) 
    }) 
    } 
) 
संबंधित मुद्दे