当前位置: 首页 > 知识库问答 >
问题:

带有多个复选框的Datatables数据筛选(服务器端)

侯沈义
2023-03-14

我正在使用带有服务器端处理的DataTables来显示数万行。我需要通过复选框筛选这些数据。我能够使一个复选框工作良好,但我不知道如何添加多个复选框一起工作。我在这里找到了类似的解决方案,但我的技能不允许我根据需要修改它:(以下是我尝试过的。

我的index.php:

Statuses:<br>
<input type="checkbox" id="0" onclick="myCheckFunc()" name="statuses">Open<br>
<input type="checkbox" id="1" onclick="myCheckFunc()" name="statuses">Closed<br>
<input type="checkbox" id="2" onclick="myCheckFunc()" name="statuses">Solved<br>

<script>
var idsa = 5;
$('input[name=statuses]').click(function(){
        idsa = [];
        $('input[name=statuses]:checked').each(function() {
                idsa.push($(this).attr('id'));
        });
        idsa = idsa.join(",");
        console.log("idsa fcia: " + idsa);
        $('#example').DataTable().ajax.reload();
});
</script>

idsa变量最初设置为5,这意味着所有的状态(没有选中复选框)然后用它的格式(d)函数发送到服务器端脚本(这部分工作正常)。这就是我在服务器端脚本中修改sql查询的方式:

if ($_GET['idsa'] == 5){
         $idsa = "0,1,2"; 
} else { if (isset($_GET['idsa'])) {
         $idsa = "('" . str_replace(",", "','", $_GET['idsa']) . "')"; } 
} 
$whereAll = "STATUS IN ($idsa)";

编辑:现在,点击这三个复选框中的第一个后,数据被正确过滤(打开状态为0的票证),但是取消选中“不带所有数据返回初始状态”。当我点击其他两个,数据被过滤,但当我取消选中,数据被fittfirst filter(打开)。单击两个或多个复选框时,会出现以下错误:

出现SQL错误:SQLState[21000]:基数冲突:1241操作数应包含1列

共有2个答案

吕骞尧
2023-03-14

尝试将status列名包装到后引号中,这似乎是一个MySQL关键字

谢墨竹
2023-03-14

好的,下面是工作代码

Status:<br>
  <input type="checkbox" id="0" name="statuses">Open<br>
  <input type="checkbox" id="1" name="statuses">Closed<br>
  <input type="checkbox" id="2" name="statuses">Solved<br>

<script>
var idsa = 5;
$('input[name=statuses]').click(function(){
        idsa = [];
        $('input[name=statuses]:checked').each(function() {
                idsa.push($(this).attr('id'));
        });
        idsa = idsa.join(",");
        console.log("idsa fcia: " + idsa);
        if (idsa == '') {
                idsa = 5;
        }
        $('#example').DataTable().ajax.reload();
});
</script>

在服务器端脚本中:

if ($_GET['idsa'] == 5){
        $idsa = "0,1,2";
} else {
        $idsa = $_GET['idsa'];
}
$whereAll = "STATUS IN ($idsa)";

问题是服务器端的部分,我从其他人那里抓了下来,并添加了另一个逗号。现在一切正常。非常感谢你抽出时间。

 类似资料:
  • 首先,我试图使选择所有复选框,如果我单击表头中的选择所有复选框,整个表行将选择并显示一个复选框反向消息,即我选择了多少复选框。这里的问题是,如果我单击select all复选框,反向消息不会显示楼上的表,即我选择了多少行。 其次,如果我从任何列中筛选任何数字,相同的数字将显示同一列中有多少行具有相同的数字。如果我选中了所有复选框,那么反向消息将显示我选中了多少行复选框。这里,问题是显示整个表行计数

  • 我一直在研究这个问题,但我找不到一个带有复选框的get drawable的解决方案。我试图做的是,当你点击这个特定的复选框时,它会过滤相应颜色的复选框。顺便说一下,这是一个片段。所以,我有可以是红色、黄色或绿色的复选框。如果用户点击它们,它会改变颜色。例如,我有一个黄色的复选框,它是chkProgress,当它被单击时,我想找到所有黄色的复选框,并筛选黄色的复选框。所以,我有可绘制的ID,我需要得

  • 我正在使用数据表和服务器端处理(Django)。 我有一个单独的textfield,在表已经呈现之后,我使用它自定义筛选DataTable中的数据。 以下操作很好(我想自定义筛选列): 所以在页面加载(DataTable的初始加载)时,它很好地过滤了'Robert'。但现在我想以编程方式更改数据以筛选 我已经尝试了以下操作,有一个正确的筛选对象,但是表本身并没有用新的筛选器重新绘制。 我也试过这个

  • 问题内容: 我需要将复选框添加到JTree。自定义TreeCellRenderer / TreeCellEditor似乎是正确的方法。到目前为止,我在此网页中使用了CheckBoxNodeRenderer方法。除了两件事,它可以正常工作: 复选框上方+下方有额外的空格;我想使其与常规JTree相同。 我想区分单击复选框本身(应尝试切换复选框)和单击与复选框相关联的文本(应允许事件侦听器将此解释为单

  • 问题内容: 是否可以将复选框代替“链接名称”? 如果是这样怎么办? 谢谢, 问题答案: 是的,当然有可能。您可以使用标准复选框: 然后在单独的javascript文件中使用jQuery订阅此复选框的change事件,并毫不客气地对其进行AJAXify:

  • 我正在使用具有多重选择和分页功能的datatable,当我选择一行并转到另一个页面,然后返回到我所在的页面时,我选择的行将不再被选中。我使用的是primefaces 3.5、mojarra、jboss 7.1,我的bean是ViewScope。下面是我的代码: 型号: