将jtable选择的行一次性发送到servlet

时间:2014-12-30 14:32:24

标签: jquery jsp servlets jquery-jtable

我必须将jtable中的选定行发送到servlet以读取值并将它们全部显示在另一个jtable中。但问题是,如果我选择多行,它会在不同的请求中将这些行发送到servlet,因此我只能使用列一次一行,但我想在servlet中一次使用所有行。我写的代码是

$(document).ready(function() {
    $('#PersonTableContainer').jtable({
        title : 'Selected Table metadata',
        selecting : true, 
        multiselect : true, 
        selectingCheckboxes : true, 
        actions : {
            listAction : 'meta?action=list',
        },
        fields : {
            columnname : {
                title : 'COLUMN NAME',
                key : true,
                width : '40%',
                list : true,
                create : true
            },
            datatype : {
                title : 'DATA TYPE',
                width : '40%',
                edit : false
            },
            columnlength : {
                title : 'LENGTH',
                width : '40%',
                edit : true
            }
        }
        ,
        selectionChanged: function () {
            var $selectedRows = $('#PersonTableContainer').jtable('selectedRows');
            $selectedRows.each(function () {

                var record = $(this).data('record');
                var columnname = record.columnname;
                var datatype = record.datatype;
                var columnlength = record.columnlength;


                $.get('meta?action=dataload', {
                    columnname : columnname,datatype:datatype,columnlength:columnlength
            }, function(response) {


            });


            });
        }

    });
    $('#PersonTableContainer').jtable('load');

对于servlet,它正在为每个选择发送一个请求,但我希望将所有行发送到 servlet在单个请求中,如果不可能,我会在jsp中给出一个“send”按钮,然后这个请求将携带所有选定的行......

1 个答案:

答案 0 :(得分:0)

通过处理selectionChanged事件,你不会在用户完成的每一行选择/取消选择操作上发送所有行吗?

我是这样做的,在我的情况下通过按钮点击,但我想你可以从selectionChanged事件处理程序中调用相同的函数

function sendSelectedRows(){

  var selectedRows = $('#tableContainer').jtable('selectedRows');

  selectedRows.each(function(){
    var record = $(this).data('record');
    selectedRowsData.push(record);
  });

myjsonpost("someserversidepage.php?; ?>",encodeURIComponent(JSON.stringify(selectedRowsData)));

}

function myjsonpost(path, params, method) {
  method = method || "post"; 

  var form = document.createElement("form");
  form.setAttribute("method", method);
  form.setAttribute("action", path);

  var hiddenField = document.createElement("input");
  hiddenField.setAttribute("type", "hidden");
  hiddenField.setAttribute("name", "Record");
  hiddenField.setAttribute("value", params);
  form.appendChild(hiddenField);

  document.body.appendChild(form);
  form.submit();
}
希望它有所帮助。