Date: 2025-04-24

# Switching from DT

#### 2025-04-24

Let’s say you already use `DT::datatable()` to display your data, but want to switch to `editbl::eDT()` to be able to edit it. What should you look out for?

- `eDTOutput()` uses an `id` argument instead of `outputId` since it’s actually a shiny module.
- `eDT()` adds extra (hidden) columns to your `datatable`. Try to format using column names instead of indexes.
- Your `datatable` now exists within a module (e.g. child namespace). This means your own chosen `outputId` is now `moduleId-DT`. This influences for example the values accessible under `input`. Example: switch from `input$outputId_cell_clicked` to `input[["moduleId-DT_cell_clicked"]]`.
- `eDT()` accepts all arguments of `DT::datatable()`, but has some different defaults for convenience.
- Any additional formatting should be done by passing a function to the `format` argument of `eDT()`.
- As always be careful when using extensions or custom javascript, not everything works well together. The KeyTable and AutoFill extensions of datatable are used by default and should be well integrated.

Here is an example covering the above:

    library(shiny)
    library(DT)

    ##
    ## Attaching package: 'DT'

    ## The following objects are masked from 'package:shiny':
    ##
    ##     dataTableOutput, renderDataTable

    library(editbl)

    ui <- fluidPage(DTOutput("DT"))
    server <- function(input, output, session){
      output$DT <- renderDataTable({
        datatable(mtcars)  %>%
         formatRound('disp', 1)
      })
      observe({
          print(input[["DT_cell_clicked"]])
       })
    }
    shinyApp(ui, server)

Shiny applications not supported in static R Markdown documents

Reworked into `eDT()`:

    ui <- fluidPage(eDTOutput("DT"))
    server <- function(input, output, session){
      editbl::eDT(
        id = "DT",
        data = mtcars,
        format = function(x){formatRound(x,'disp', 1)})

       observe({
          print(input[["DT-DT_cell_clicked"]])
       })
    }
    shinyApp(ui, server)

Shiny applications not supported in static R Markdown documents