Javascript Datatables—当未显示所有列时,如何禁用表中最后一列的排序
我有一张这样的桌子:Javascript Datatables—当未显示所有列时,如何禁用表中最后一列的排序,javascript,jquery,sorting,datatable,datatables,Javascript,Jquery,Sorting,Datatable,Datatables,我有一张这样的桌子: "columns": [ { "data": 0, "iDataSort" : 0 }, { "data": 1, "iDataSort" : 1, "render": function ( data, type, row ) {
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
JS:
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
“列”:[
{
“数据”:0,
“iDataSort”:0
},
{
“数据”:1,
“iDataSort”:1,
“渲染”:函数(数据、类型、行){
var returnString=数据;
if(第[2]行!==null&&第[2]行。长度>0){
returnString+=“”;
对于(第[2]行中的var alternativeTitle){
returnString+=“- ”+行[2][alternativeTitle]+“
”
}
returnString+=“
”
}
返回字符串;
}
},
{
“iDataSort”:3,
“数据”:3
},
{
“iDataSort”:4,
“数据”:4
},
{
“数据”:空,
“可搜索”:错误,
“可移植”:错误,
“sClass”:“中心”,
“渲染”:函数(行){
返回“”;
}
}
],
HTML:
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
<table>
<thead>
<tr role="row" class="heading">
<th>
Id#
</th>
<th>
Original title (alternative titles)
</th>
<th>
Year of production
</th>
<th>
Country
</th>
<th>
Actions
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
身份证#
原标题(替代标题)
生产年份
国家
行动
如您所见,我提供了一个5列数组作为数据源(id、标题、备选标题[]、生产年份和国家),但呈现方式不同(原始标题和备选标题位于同一列,而最后一列用于操作按钮)。现在我想禁用对最后一列的排序(因为这没有意义,因为它是为按钮保留的),但是当我在最后一列的按钮上放置“bSortable”:false时,它会从视觉上影响最后一列,但也会影响数据表发送的GET,实际上,当我单击“按国家排序”时,什么都不会发生,因为datatables向服务器发送“bSortable_4=false
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
我希望能够在国家/地区列上排序,但禁用操作列上的排序。如何实现这一点?以下是html
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
<table id="example">
<thead>
<tr role="row" class="heading">
<th>
Id#
</th>
<th>
Original title (alternative titles)
</th>
<th>
Year of production
</th>
<th>
Country
</th>
<th>
Actions
</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>delete</td></tr>
<tr><td>2</td><td>2</td><td>4</td><td>5</td><td>delete</td></tr>
</tbody>
</table>
这是小提琴
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
希望有帮助!这是html
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
<table id="example">
<thead>
<tr role="row" class="heading">
<th>
Id#
</th>
<th>
Original title (alternative titles)
</th>
<th>
Year of production
</th>
<th>
Country
</th>
<th>
Actions
</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>delete</td></tr>
<tr><td>2</td><td>2</td><td>4</td><td>5</td><td>delete</td></tr>
</tbody>
</table>
这是小提琴
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],
希望有帮助!可能重复的??您尝试过这个吗???@Poria是的,我尝试过。“aoColumnDefs”:[{'bSortable':false,'aTargets':[4]}],还禁用了“country”列可能重复的??您尝试过这个吗???@Poria是的,我尝试过。“aoColumnDefs”:[{'bSortable':false,'aTargets':[4]}],还禁用了“country”列它不起作用。当我使用您的解决方案时,它禁用了对“Actions”和“country”列的排序。我可以单击“country”列,但什么也没有发生,因为Datatables发送了“bSortable_4”==false,其中4是服务器列数组中的country列(0-身份证,1-原头衔,2-备选头衔,3年,4-国家)它在我发送的小提琴中工作,请根据您的需要尝试即兴创作,谢谢!它不起作用。当我使用您的解决方案时,它禁用了“操作”和“国家”列的排序。我可以单击“国家”列,但什么也没有发生,因为Datatables发送了“bSortable_4”==false,其中4是服务器中的国家列columns array(0-id,1-original title,2-alternative title,3-year,4-country)它正在我发送的小提琴中工作,请根据您的需要尝试即兴创作,谢谢!
"columns": [
{
"data": 0,
"iDataSort" : 0
},
{
"data": 1,
"iDataSort" : 1,
"render": function ( data, type, row ) {
var returnString = data;
if( row[2] !== null && row[2].length > 0){
returnString += "<ul>";
for( var alternativeTitle in row[2] ){
returnString += "<li>" + row[2][alternativeTitle] + "</li>"
}
returnString += "</ul>"
}
return returnString;
}
},
{
"iDataSort" : 3,
"data": 3
},
{
"iDataSort" : 4,
"data": 4
},
{
"data":null,
"bSearchable": false,
"bSortable": false,
"sClass": "center",
"render": function (row) {
return '<a href"#">Edit</a>';
}
}
],