jQuery DataTables用于下拉列表渲染列数据的列过滤

时间:2018-01-09 15:35:45

标签: javascript jquery datatables

在我的表格中,我在页脚中创建一个下拉过滤器:

            initComplete : function(settings, json){
            this.api().columns([1,2,4,5,7,9,10,11,12,13,15,17,18,19]).every( function () {
                var column = this;
                var select = $('<select><option value=""></option></select>')
                    .appendTo( $(column.footer()).empty() )
                    .on( 'change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val()
                        );
                        column
                            .search( val ? '^'+val+'$' : '', true, false )
                            .draw();
                    } );
                column.data().unique().sort().each( function ( d, j ) {
                    select.append( '<option value="'+d+'">'+d+'</option>' )
                } );
            } );

在几个列中,我根据模型中的值列表和特定行中的选定值创建下拉列表:

                {
                "render": function(data, type, full, meta){
                    var $select = $("<select></select>", { 'class' : 'ctrl-status'});
                    $select.attr("id", "ddl" + full[0])
                    $.each(statuslist, function (Value, Text) {
                        var $opt = $('<option value=' + Text.Value + '>' + Text.Text + '</option>');

                        if (Text.Value === full[6]){
                            $opt.attr("selected", "selected");
                        }
                        $select.append($opt);
                    });
                    return $select.prop("outerHTML");
                }
            },

问题是过滤器下拉列表正确显示了值,但是当我选择其中一个值时,没有选择或显示任何值。在每一行中,我在列中包含所选值并隐藏该列。换句话说,对于status,为下拉列表提供了多个值,但该行的下一列包含项目的选定状态。然后我将下拉列表设置为该值。有没有办法根据我过滤的列来查看过滤值的下一列?

0 个答案:

没有答案