Il metodo R che esegue il rendering di un DataTable ha un parametro che definisce la modalità di selezione. Per esempio:
output$table1 <-
DT::renderDataTable(dataSet,
selection = 'single')
valori possibili sono ('multiple' è il default):
Per ulteriori riferimenti si possono vedere: http://rstudio.github.io/DT/shiny.html
EDIT 04/14/2016
Nella configurazione che uso a lavorare con singola modalità di selezione ha problemi.
Ecco la versione che uso:
> DT:::DataTablesVersion
[1] "1.10.7"
> packageVersion("DT")
[1] ‘0.1’
Il problema che ho riscontrato è che visivamente si dispone di una singola selezione di fila, ma quando lo fai:
observeEvent(input$table1_rows_selected, {
str(input$table1_rows_selected)
})
Si otterrà una lista con tutti i righe che sono state selezionate ma non sono state deselezionate esplicitamente. In altre parole, la selezione di una nuova riga non deseleziona automaticamente la riga precedente nella logica Datatables interna. Ciò potrebbe anche essere dovuto al wrapper DT, non è sicuro.
Questo è il motivo attualmente come una soluzione che usiamo JS per questo:
$(document).on('click', '#table1 table tr', function() {
var selectedRowIds = $('#table1 .dataTables_scrollBody table.dataTable').DataTable().rows('.selected')[0];
var selectedId = "";
if (selectedRowIds.length === 1) {
selectedId = $(this).children('td:eq(0)').text();
} else {
$('#table1 tbody tr').removeClass('selected');
}
Shiny.onInputChange("table1_selected_id", selectedId);
});
volta che hai questo in luogo si sarà in grado di fare:
observeEvent(input$table1_selected_id, {
str(input$table1_selected_id)
})
Questo ora almeno manda corretta dati al tuo server. Codice. Sfortunatamente avrai ancora un problema con la tabella perché internamente tiene traccia di quali file sono state selezionate e se cambi pagina ripristinerà una selezione errata. Ma almeno questo è puramente un difetto visivo e il tuo codice avrà la possibilità di funzionare correttamente. Quindi questa soluzione ha bisogno di più lavoro.
Il collegamento è interrotto. Intendi questa app: https://yihui.shinyapps.io/DT-rows/ – 5th