使用SQLAlchemyDataTables和jquery显示带有multiselect复选框的表

2024-09-29 21:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用SQLAlchemy DataTables来构建一个具有服务器端处理功能的表,该表具有具有多选复选框功能的列。在

这是我的flask python代码:

@app.route('/myiocs', methods=['GET'])
@login_required
def myiocs():
    title = "My IOCs"
    return render_template('myiocs.html', **locals())

@app.route('/myiocsdata', methods=['GET'])
@login_required
def myiocsdata():
    """Return server side data."""

    # defining columns
    columns = [
        ColumnDT(sparkDB.ioc),
        ColumnDT(sparkDB.ioc_type),
        ColumnDT(sparkDB.active_mon),
        ColumnDT(sparkDB.lifecycle_mon),
        ColumnDT(sparkDB.added_by),
        ColumnDT(sparkDB.tags),
    ]
    query = sparkDB.query.filter_by(organization=current_user.organization).order_by(sparkDB.added_on)
    params = request.args.to_dict()
    rowTable = DataTables(params, query, columns)

    return jsonify(convertToUTF8(rowTable.output_result()))

下面是我的html表结构:

^{pr2}$

下面是我的javascript,可以帮助呈现datatable:

    $(document).ready(function() {
        var table = $('#sparkdb').DataTable({
            "processing": true,
            "serverSide": true, 
            "ajax": "{{ url_for('myiocsdata') }}",
            'columnDefs': [ 
                {               
                    'targets': 0,
                    'checkboxes': {
                        'selectRow': true
                    }           
                }               
            ],              
            'select': { 
                    'style': 'multi'
                },          
            'order': [[1, 'asc']]
        });                         
       $('#myiocs-frm').on('submit', function(e){
          var form = this;  

          var rows_selected = table.column(0).checkboxes.selected();

          // Iterate over all selected checkboxes
          $.each(rows_selected, function(index, rowId){
             // Create a hidden element 
             $(form).append(
                 $('<input>')
                    .attr('type', 'hidden')
                    .attr('name', 'id[]')
                    .val(rowId)
             );
            });
        });
    });

当我尝试运行代码时,我从datatables js库返回以下错误作为警报:

DataTables warning: table id=sparkdb - Requested unknown parameter '6' for row 0, column 6. For more information about this error, please see http://datatables.net/tn/4

消除错误后,表将显示,但是没有复选框,列未对齐。如果有人帮我指出正确的方向,我将不胜感激!在


Tags: columns功能truebyvartablefunctionquery
1条回答
网友
1楼 · 发布于 2024-09-29 21:20:29

返回7列,但只有6列。错误:

Requested unknown parameter '6' for row 0, column 6

基本上是说第7列没有数据。您需要为复选框列返回一个空白。像这样:

^{pr2}$

错误正在停止Datatables init进程,导致复选框不显示。看起来你在使用Gyrocode复选框插件。我假设您正在加载插件的include文件: https://www.gyrocode.com/projects/jquery-datatables-checkboxes/

相关问题 更多 >

    热门问题