nek*_*ime 18 jquery datatables
如何在jquery的datatable插件中获取列id我需要在数据库中进行更新的列id.
Jam*_*ack 23
fnGetPosition
从它的DOM元素中获取特定单元格的数组索引.最好与fnGetData()结合使用.
输入参数:
nNode:您要查找其位置的节点.这可以是表格中的"TR"行或"TD"单元格.返回参数取决于此输入.
返回参数:
int或array [int,int,int]:如果节点是表行(TR),则返回值将是一个整数,其中包含aoData对象中行的索引.如果节点是表格单元格(TD),则返回值将是具有[aoData索引行,列索引(折扣隐藏行),列索引(包括隐藏行)]的数组.
代码示例:
$(document).ready(function() {
$('#example tbody td').click( function () {
/* Get the position of the current data from the node */
var aPos = oTable.fnGetPosition( this );
/* Get the data array for this row */
var aData = oTable.fnGetData( aPos[0] );
/* Update the data array and return the value */
aData[ aPos[1] ] = 'clicked';
this.innerHTML = 'clicked';
} );
/* Init DataTables */
oTable = $('#example').dataTable();
} );
Run Code Online (Sandbox Code Playgroud)
fba*_*bas 10
我认为从datatables.net网站上面的股票回答没有帮助,并没有回答这个问题.
我相信neko_ime希望获得与所选项的列对应的列标题值(因为这可能与表中的列名相同,或者用户在表标题和数据库表之间有映射).
以下是给定单元格的sTitle(列名值)的方法
(注意我在每一行的第一列都有我的主键,并确保即使使用带有ColReorder的可移动列iFixedColumns为1,也要将该键保存在第一列.我的数据表由oTable引用.我假设我有单元格DOM引用,我在下面称之为"目标":
var value = target.innerHTML;
var ret_arr = oTable.fnGetPosition( target ); // returns array of 3 indexes [ row, col_visible, col_all]
var row = ret_arr[0];
var col = ret_arr[1];
var data_row = oTable.fnGetData(row);
var primary_key = data_row[0];
var oSettings = oTable.fnSettings(); // you can find all sorts of goodies in the Settings
var col_id = oSettings.aoColumns[col].sTitle; //for this code, we just want the sTitle
// you now have enough info to craft your SQL update query. I'm outputting to alert box instead
alert('update where id="'+primary_key+'" set column "'+col_id+'" ('+row+', '+col+') to "'+value+'"');
Run Code Online (Sandbox Code Playgroud)
这是我必须弄明白的事情,因为我使用JEditable来允许用户编辑表格中的单元格.
上面的代码片段实际上帮助我解决了我的特殊情况.这是我的代码:
// My DataTable
var oTable;
$(document).ready(function() {
/* You might need to set the sSwfPath! Something like:
* TableToolsInit.sSwfPath = "/media/swf/ZeroClipboard.swf";
*/
TableToolsInit.sSwfPath = "../../Application/JqueryPlugIns/TableTools/swf/ZeroClipboard.swf";
oTable = $('#tblFeatures').dataTable({
// "sDom": '<"H"lfr>t<"F"ip>', // this is the standard setting for use with jQueryUi, no TableTool
// "sDom": '<"H"lfrT>t<"F"ip>', // this adds TableTool in the center of the header
"sDom": '<"H"lfr>t<"F"ip>T', // this adds TableTool after the footer
// "sDom": '<"H"lfrT>t<"F"ip>T', // this adds TableTool in the center of the header and after the footer
"oLanguage": { "sSearch": "Filter this data:" },
"iDisplayLength": 25,
"bJQueryUI": true,
// "sPaginationType": "full_numbers",
"aaSorting": [[0, "asc"]],
"bProcessing": true,
"bStateSave": true, // remembers table state via cookies
"aoColumns": [
/* CustomerId */{"bVisible": false },
/* OrderId */{"bVisible": false },
/* OrderDetailId */{"bVisible": false },
/* StateId */{"bVisible": false },
/* Product */null,
/* Description */null,
/* Rating */null,
/* Price */null
]
});
// uncomment this if you want a fixed header
// don't forget to reference the "FixedHeader.js" file.
// new FixedHeader(oTable);
});
// Add a click handler to the rows - this could be used as a callback
// Most of this section of code is from the DataTables.net site
$('#tblFeatures tr').click(function() {
if ($(this).hasClass('row_selected')) {
$(this).removeClass('row_selected');
}
else {
$(this).addClass('row_selected');
// Call fnGetSelected function to get a list of selected rows
// and pass that array into fnGetIdsOfSelectedRows function.
fnGetIdsOfSelectedRows(fnGetSelected(oTable));
}
});
function fnGetSelected(oTableLocal) {
var aReturn = new Array();
// fnGetNodes is a built in DataTable function
// aTrs == array of table rows
var aTrs = oTableLocal.fnGetNodes();
// put all rows that have a class of 'row_selected' into
// the returned array
for (var i = 0; i < aTrs.length; i++) {
if ($(aTrs[i]).hasClass('row_selected')) {
aReturn.push(aTrs[i]);
}
}
return aReturn;
}
// This code is purposefully verbose.
// This is the section of code that will get the values of
// hidden columns in a datatable
function fnGetIdsOfSelectedRows(oSelectedRows) {
var aRowIndexes = new Array();
var aRowData = new Array();
var aReturn = new Array();
var AllValues;
aRowIndexes = oSelectedRows;
// The first 4 columns in my DataTable are id's and are hidden.
// Column0 = CustomerId
// Column1 = OrderId
// Column2 = OrderDetailId
// Column3 = StateId
// Here I loop through the selected rows and create a
// comma delimited array of id's that I will be sending
// back to the server for processing.
for(var i = 0; i < aRowIndexes.length; i++){
// fnGetData is a built in function of the DataTable
// I'm grabbing the data from rowindex "i"
aRowData = oTable.fnGetData(aRowIndexes[i]);
// I'm just concatenating the values and storing them
// in an array for each selected row.
AllValues = aRowData[0] + ',' + aRowData[1] + ',' + aRowData[2] + ',' + aRowData[3];
alert(AllValues);
aReturn.push(AllValues);
}
return aReturn;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68684 次 |
| 最近记录: |