php - 使用 Jquery 动态创建的数据表
问题描述
我正在以动态方式创建数据表,值得一提的是,我正在使用 PHP(Laravel),出于非常特殊的需要,我在模态中显示数据表。
问题是我正在使用DataTables 插件,因为我想使用本机搜索选项。
我不相信 PHP 的 DataTable,我相信它使用 AJAX,我向您展示我是如何做到的:
$.ajax
({
url:'../../ingresoarticulos/buscarIngresosTerminadosDesechados',
type:'get',
dataType:'json',
beforeSend: function () {
$cargando.show();
},
complete: function () {
$cargando.hide();
},
success: function (data)
{
var $resultado=data.ingresosTerminadosDesechados;
var $filas='';
if($.isEmptyObject($resultado))
{
$filas += "<tr>";
$filas += "<td colspan='7'><h4 style='text-align:
center'>"+$txt_finished_discarded_items+"</h4></td>";
$filas += "</tr>";
}
$.each($resultado,function (index,valor)
{
var $id = "<td id='id'>"+valor.id+"</td>";
var $numeroSolicitud = "<td id='solicitud_id' >"+valor.id_solicitud+"</td>";
var $numeroSerie = "<td id='numero_serie'>"+valor.serie_articulo+"</td>";
var $numeroSku = "<td id='numero_sku'>"+valor.sku_articulo+"</td>";
var $totalServicio = "<td id='total_servicio'>"+parseFloat(valor.total_ingreso).toFixed(2)+"</td>";
var $agregarServicio="<td class='click'><input type='button' id='agregar_servicio' class='btn-sm btn-info col-lg-12 col-xs-12 col-sm-12 col-md-12 incluir' value="+$txt_btn_add+"></td>";
if(valor.estatus_ingreso==="Terminado")
{
var $estadoArticulo = "<td id='estado_articulo' style='color: #3d8b3d;font-weight: bold'>"+$txt_status_article_finished+"</td>";
var $pesoArticulo = "<td id='peso_articulo'>"+parseFloat(valor.peso_articulo).toFixed(2)+"</td>";
}
else
if(valor.estatus_ingreso==="Desechado")
{
var $estadoArticulo = "<td id='estado_articulo' style='color: #b0141a;font-weight: bold'>"+$txt_status_article_discarded+"</td>";
var $pesoArticulo = "<td id='peso_articulo'>"+parseFloat(0.00).toFixed(2)+"</td>";
}
$filas += "<tr data-status='"+valor.estatus_ingreso+"'>";
$filas += $id;
$filas += $numeroSolicitud;
$filas += $numeroSerie;
$filas += $numeroSku;
$filas += $pesoArticulo;
$filas += $totalServicio;
$filas += $estadoArticulo;
$filas += $agregarServicio;
$filas += "</tr>";
});
$("#tablemodalarticulostd tbody").html($filas);
那里的一切都很完美,当我通过 DataTable 的插入时出现了问题。
$solicitudEnvio.DataTable({
// "paging": false,
// "info": false,
//
"order": [[0, "desc"]],
"language": {
"search": "Buscar: ",
"searchPlaceholder": "Escriba los datos que desea buscar",
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
}
}
});
窗口显示堵塞特性但不工作。
我怎么知道?嗯......它不过滤,它不计算记录并且它不显示页面,我已经阅读了很多关于这个案例的信息,但我真的没有得到它的工作方式。
解决方案
发生这种情况是因为您手动创建表而 dataTable 没有意识到这一点。相反,使用dataTable 的ajax 选项。
您的 DataTable 初始化应该有点像下面。
$solicitudEnvio.DataTable({
"order": [[0, "desc"]],
"language": {
"search": "Buscar: ",
"searchPlaceholder": "Escriba los datos que desea buscar",
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
}
},
"ajax": {
url:'../../ingresoarticulos/buscarIngresosTerminadosDesechados',
type:'get',
dataType:'json',
beforeSend: function () {
$cargando.show();
},
complete: function () {
$cargando.hide();
},
},
"columnDefs": [
{
target: 4,
render: function (d) {
if (r.estatus_ingreso==="Terminado") {
return parseFloat(d).toFixed(2);
} else if (r.estatus_ingreso==="Desechado") {
return parseFloat(0.00).toFixed(2);
}
},
},
{
target: 5,
render: function (d) {
return parseFloat(d).toFixed(2)
},
},
{
target: 6,
render: function (d, t, r) {
if (r.estatus_ingreso==="Terminado") {
return $txt_status_article_finished;
} else if (r.estatus_ingreso==="Desechado") {
return $txt_status_article_discarded;
}
},
},
{
target: 7,
render: function (d) {
return "<input type='button' id='agregar_servicio' class='btn-sm btn-info col-lg-12 col-xs-12 col-sm-12 col-md-12 incluir' value=" + d + ">"
},
}
],
});
推荐阅读
- tomcat - 在 Grails 应用程序中调用“/”时出现 Tomcat 403 错误
- swift - 从推送通知中获取值
- python - 烧瓶在容器内工作,但当我将其转发时却没有
- python - python和nodejs之间使用protobuf的序列化问题
- vba - 公式返回#Name?虽然它在 Excel VBA 中是正确的
- ios - UserDefaults 混淆了数据
- tensorflow - 速度是用 cpu 训练 tensorflow 模型的唯一问题吗
- javascript - 在值键之前添加文本标题
- python - 如何使用 tf.multiply 执行自定义渐变?
- reactjs - 如何根据浏览器位置路径名应用不同的样式?