我在同一页面的两个表中使用Picnet表过滤器。 其中一个是在我的js文件上动态生成的,使用AJAX从MySQL数据库中检索数据。 另一个有硬编码数据。
动态生成的是不起作用的那个。 (我创建了硬编码的,只是为了看问题是否与此相关) 一开始我也在我的js函数中生成“thead”和“th”标签,但是因为我收到错误,说“thead”未定义我将该代码移动到HTML文件...目前我只是添加通过追加函数将“tr”和“td”改为“tbody”......但过滤器不起作用。对于组合框过滤器,唯一的选择是“选择..”应该基于列数据生成的其他选项不是。
你知道这里可能出现什么问题吗? 在此先感谢... Monica
HTML code:
<table id="tablaReservas" border="1">
<thead>
<tr><th>Reserva#</th><th filter-type="ddl">Recurso</th><th>Inicio</th><th>Fin</th>th>Responsable</th><th>Usuario</th></tr>
</thead>
<tbody>
</tbody>
</table>
Quick Find: <input type="text" id="quickfind"/><a id="cleanfilters" href="#">Clear Filters</a>
<table id='demotable'>
<thead>
<tr><th filter-type="ddl">Col1</th><th>Col2</th><th>Col3</th></tr>
</thead>
<tbody>
<tr><td>Value 1</td><td>Value 2</td><td>Value 3</td></tr>
<tr><td>Value 4</td><td>Value 6</td><td>Value 8</td></tr>
<tr><td>Value 5</td><td>Value 7</td><td>Value 9</td></tr>
</tbody>
</table>
Javascript代码:
$(document).ready(inicializar);
function inicializar(){
traerReservas();
var options = { additionalFilterTriggers: [$('#quickfind')], clearFiltersControls: [$('#cleanfilters')]};
$("#tablaReservas").tableFilter(options);
$("#demotable").tableFilter(options);
}
function traerReservas(){
$.ajax({async:true,
url:"../Persistencia/procesaConsultaReservas.php",
type:"POST",
datatype:"json",
success:mostrarTabla,
error:mensajeTablaReservas,
});
}
function mostrarTabla(data){
var d= eval('(' + data + ')');
if (data!=0) {
for (i=0; i < d.length; i++) {
var tr= $("<tr id='" + d[i].id + "' onclick=mostrarRecursos(" + d[i].id + ");>" +
"<td>" + d[i].id + "</td>" +
"<td>" + d[i].nombre + "</td>" +
"<td>" + d[i].inicio + "</td>" +
"<td>" + d[i].fin + "</td>" +
"<td>" + d[i].responsable + "</td>" +
"<td>" + d[i].usuario + "</td>" +
"</tr>");
$("#tablaReservas tbody").append(tr);
}
}
}
答案 0 :(得分:1)
在document.ready中初始化PicNet表:
$(document).ready(function() {
$('#m-stats-table').tableFilter();
});
然后,在ajax语句的成功回调中,刷新过滤器:
$('#m-stats-table').tableFilterRefresh();
另外,请确保在加载表格之前清除表格时,不要删除初始picnet过滤器。
这应该有效。
答案 1 :(得分:0)
使用过滤器的一种方法是直接访问表列id。虽然这种方法可能不是正确的方法,但它确实有效。
表格的每一列都标识为filter_0,filter_1等。因此,将要过滤的值直接传递给列。
$('#filter_0').val('pass your value here');
这适用于动态生成或硬编码表。但是,如果同一页面中有多个表,则可以使用.closest方法相应地识别和修改代码。 希望这会有所帮助。
答案 2 :(得分:0)
1)创建一个连接到服务器并动态获取数据的JSP页面。
2)将JSP数据加载到表体中并初始化搜索插件
$('#demotable tbody').load('fetchedData.jsp',function(){
var options = { additionalFilterTriggers: [$('#quickfind')], clearFiltersControls: [$('#cleanfilters')]};
$("#demotable").tableFilter(options);
//Define other functions for event trigger
});
这对我有用!!!