我使用这个问题作为参考,在一个闪亮的应用程序中向DT::datatable
添加一个“行索引”或“计数器列”(如这里的datatable文档中所述)。其目的是保持表中的行名称不变(1、2、3…)不考虑应用于表的排序。
用户NicE通过转换datatable文档中的javascript代码来回答这个问题,以便在DT::datatable
选项的回调中使用:
output$tbl = renderDataTable({
datatable(data, filter = "top", rownames=TRUE,options = list(
pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
),
callback=JS("table.on( 'order.dt search.dt', function () {
table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;});}).draw();"))
})
如果我只在本地运行datatable(…部分代码;但是,当我在闪亮应用程序的renderDataTable
中运行时,它不起作用(当移动到第一个页面以外的页面时,行名恢复为原始排序)。根据上面链接的datatable文档中的一条注释,用户DeFKnoL发现,如果在表中的页面之间移动,这将无法正常工作-这正是我运行我的应用程序时的问题。DeFKnoL的评论指出(“deferRender”:true)会导致此问题-我已尝试在DT::datatable
选项中将其更改为FALSE,但这并不能解决此问题。
我希望有人能帮我把这个用户的javascript代码转换成我可以输入回调选项的DT::da可标记的
。
下面是datatable文档中概述的原始方法中的javascript代码(该代码经过了修改以用于回调):
$(document).ready(function() {
var t = $('#example').DataTable( {
"columnDefs": [ {
"searchable": false,
"orderable": false,
"targets": 0
} ],
"order": [[ 1, 'asc' ]]
} );
t.on( 'order.dt search.dt', function () {
t.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
} );
} ).draw();
} );
以下是DeFKnoL的更新方法,它可以解决更改页面的问题:
$(document).ready(function() {
var t = $('#example').DataTable( {
"columnDefs": [ {
"searchable": false,
"orderable": false,
"targets": 0
} ],
"order": [[ 1, 'asc' ]]
} );
t.on( 'draw.dt', function () {
var PageInfo = $('#example').DataTable().page.info();
t.column(0, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = i + 1 + PageInfo.start;
} );
} );
} );
正如您可能看到的,NicE的JS()
input与文档不完全匹配,而且我没有使用javascript的经验,因此我很难实现这一更改。添加“计数器列”可能比这简单得多,但除了上面链接的原始问题之外,我没有找到其他方法。任何帮助都将不胜感激!
两种可能性:
1)使用server=FALSE
:
output$tbl <- renderDT({
datatable(data, filter = "top", rownames=TRUE,
options = list(
pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
),
callback=JS("table.on( 'order.dt search.dt', function () {
table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;});}).draw();")
)
}, server = FALSE)
2) 否则,以下是DeFKnoL的方法:
js <- c(
"table.on('draw.dt', function(){",
" var PageInfo = table.page.info();",
" table.column(0, {page: 'current'}).nodes().each(function(cell,i){",
" cell.innerHTML = i + 1 + PageInfo.start;",
" });",
"})")
output$tbl <- renderDT({
datatable(data, filter = "top", rownames=TRUE,
options = list(
pageLength = 300, lengthMenu = c(100,200,300,400,500,600)
),
callback = JS(js)
)
})
我有一个复杂的UI设置,如下所示: 谢谢你。
我正在使用具有多重选择和分页功能的datatable,当我选择一行并转到另一个页面,然后返回到我所在的页面时,我选择的行将不再被选中。我使用的是primefaces 3.5、mojarra、jboss 7.1,我的bean是ViewScope。下面是我的代码: 型号:
我正在我的项目中使用yii2小部件datetimepicker。我想在提交页面后保留它的价值。 如何保留选定的日期时间值?任何帮助将高度赞赏。
是否有任何方法可以在数据框中按索引(即整数)选择行,按列名选择列? 我尝试使用loc,但它返回一个错误,我知道iloc只适用于索引。 这是数据帧df的第一行。我愿意选择第一行,名为“Volume”的列,并尝试使用df.loc[0,'Volume']
我在用房间数据库。
我有一个简单的使用Ajax从json文件动态生成的select选项,但我没有做到的是在提交表单后将以前选择的选项保持为选中状态。用发送到JS的PHP变量尝试了这一点,但我找不到在脚本标记中使用PHP代码的方法,并且用PHP重复所有内容都很难看。有什么想法吗? 我的PHP AJAX代码: 我的JSON文件: