jquery DataTables - 更改单元格的值而不仅仅是显示值
Posted
技术标签:
【中文标题】jquery DataTables - 更改单元格的值而不仅仅是显示值【英文标题】:jquery DataTables - change value of a cell not just display value 【发布时间】:2011-03-18 23:25:36 【问题描述】:使用DataTables 我想在渲染表格之前更改数据的值。我用这个:
"fnRowCallback": function( nRow, aData, iDisplayIndex )
if ( aData[2] == "0" )
$('td:eq(1)', nRow).html( '<b>6</b>' );
但我发现虽然我将显示的文本更改为 0 到 6,但当我按列排序时,它仍然是按数据排序,而不是按显示的文本排序。
有谁知道我如何才能真正更改单元格中的数据,以便在我排序时它会按 0-6 正确排序?
【问题讨论】:
【参考方案1】:您需要更新数据表,而不是 html。
oTable.fnUpdate( newValue, rowPos, columnPos);
假设oTable
是对数据表的引用。
【讨论】:
谢谢我会先给它,我想我需要 jeditable ti 使用 fnUpdate,是吗? 你应该不需要使用 jEditable,只需要使用 fnUpdate。除了在示例中调用 fnUpdate 之外,jEditable 本身并没有做任何特别的事情。 fnUpdate 实际上并没有正确更改 DOM 吗?我更改了值,但是当有人过滤时,相同的行再次被更新。如何改变它,使改变成为永久性的。【参考方案2】:您可能应该粘贴更多代码,尤其是排序区域。
您似乎混淆了 val() 和 html():
这将为您提供值标签“value=?”中的输入或单元格值
$("#currentRow").val()
这将为您提供标签“
$("#currentRow").html()
【讨论】:
你好 "fnRowCallback": function(nRow, aData, iDisplayIndex) if (aData[2] == "0") $('td:eq(1)', nRow). html('2'); nRow else if ( aData[2] == "1" ) $('td:eq(1)', nRow).html( '1' ); else if ( aData[2] == "2" ) $('td:eq(1)', nRow).html( '0' );返回 nRow; ,我想要实现的是反转从服务器数据中获得的优先级(6 高优先级 - 0 低优先级),以便按优先级排序,以便升序(0 高 - 6 低)。非常感谢您的帮助 在 fnRowCallback 之后,我执行此排序以尝试按修改后的最佳匹配(优先级)排序 "aaSorting": [[ 2, "asc" ]], "aoColumns": [ /*checkbox* / "bSortable": false , /*ID*/"bVisible": false , /*best match*/null, /*VenueName*/null, /*Distance*/null, /*Capacity*/null , /*MeetingRooms*/null, /*Bedrooms*/null, /*Suitability*/null ]);以上是关于jquery DataTables - 更改单元格的值而不仅仅是显示值的主要内容,如果未能解决你的问题,请参考以下文章
DataTables jQuery:如何使用单元格的值而不是基于正在呈现的值进行搜索?