отредактированная ячейка в таблице данных возвращается к своему первоначальному значению после того, как отметьте / снимите галочку в блестящем приложении - PullRequest
1 голос
/ 02 октября 2019

Это расширение этой записи

. После того, как я редактирую любую ячейку в таблице редактируемых данных, я проверяю / снимаю отметку с некоторого столбца, ячейка возвращается к своему первоначальному значению.

Понятия не имею, почему это происходит. Кто-нибудь знает, как я могу это исправить? Заранее большое спасибо!

library(shiny)
library(DT)
library(dplyr)


    # UI
    ui = fluidPage(DT::dataTableOutput('tbl'),
                   checkboxGroupInput('datacols', 
                                      label='Select Columns:',
                                      choices= c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
                                      selected = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
                                      inline=TRUE )

    )

    # SERVER
    server = function(input, output) {



        df = reactiveValues()

        observe ({

            df$dat = iris %>% select(one_of(input$datacols))
        })
        # render DT
        output$tbl = renderDT(server=FALSE, {
            datatable(df$dat,
                      editable = "cell",
                      extensions = "Buttons",
                      options = list(
                          dom = "Bfrtip", buttons = list("csv")))

        })


        observeEvent(input[["tbl_cell_edit"]], {
            cellinfo <- input[["tbl_cell_edit"]]
            df$dat  <- editData(df$dat,  input[["tbl_cell_edit"]])
        })

    }
shinyApp(ui=ui, server = server)

1 Ответ

1 голос
/ 02 октября 2019

Нам нужно выбрать столбцы, когда мы отображаем данные.

    observe ({
                df$dat = iris 
            })
            # render DT
            output$tbl = renderDT(server=FALSE, {
                datatable(df$dat %>% select(one_of(input$datacols)),
                          editable = "cell",
                          extensions = "Buttons",
                          options = list(
                              dom = "Bfrtip", buttons = list("csv")))

            })
...