问题描述
用jquery easyui datagrid$(function(){ product = $('#product').datagrid({ nowrap:false, striped:true, url:'listProduct.action', sortName: 'pn', sortOrder: 'desc', idField:'pn', frozenColumns:[[{field:'ck',checkbox:true}, ]], columns:[[ {field:'pn',title:'P/N',width:100,align:'center'}, {field:'description',title:'Description',width:120,align:'center'}, {field:'type',title:'Type',width:100,align:'center'}, {field:'brand',title:'Brand',width:60,align:'center'}, {field:'pack',title:'Package',width:60,align:'center'}, {field:'unit',title:'Unit',width:60,align:'center'}, {field:'unitCost',title:'Unit Cost',width:60,align:'right'}, {field:'sell',title:'Sell',width:60,align:'center'}, {field:'quantity',title:'Quantity',width:60,align:'center'}, {field:'dateCode',title:'Date Code',width:60,align:'center'}, ]], pagination:true, toolbar:[{ text:'Add', iconCls:'icon-add', handler:function(){ alert('add') } },'-',{ text:'Edit', iconCls:'icon-edit', handler:function(){ alert('edit') } },'-',{ text:'Delete', iconCls:'icon-remove', handler:function(){ delRows(product); } }] }); }); function delRows(table) { var arr = getSelectedRows(table); if (arr.length > 0) { $.messager.confirm('Prompt', 'Are you sure to delete the selected record(s)', function (data) { if (data) { $.ajax({ url: 'delProduct', type: 'get', dataType: 'json', data: {"id":"[{'id':3},{'id':5}]"}, // timeout: 1000, error: function () { $.messager.alert('Error', 'Delete Failure!', 'error'); }, success: function (data) { if (data.success) { grid.datagrid('reload'); grid.datagrid('clearSelections'); } else { $.messager.alert('Error', data.msg, 'error'); } } }); } }); } else { $.messager.show({ title: 'Wraning', msg: 'Please select the record you want to delete!' }); }function getSelectedRows(table) { var ids = []; var rows = table.datagrid('getSelections'); for (var i = 0; i < rows.length; i++) { ids.push(rows[i].id); } alert(ids.join('n')); return ids;}现在主要是data的数据,应该怎么样得到,多选的现在写的红色部分是测试用的,主要是想传数组对jquery不大熟悉,请大家指教 问题补充嗯,这个是我加多了,删除了,谢谢我就是想在前台用户选择了 多行数据(通过checkbox),然后我要在后台把这些删除,现在问题是不知道怎么样把这些选择的id传到后台 问题补充:<div class="quote_title">langshao 写道</div><div class="quote_div">看到你的 getSelectedRows(table) 已经拿到了 选中行的 ID 。<br /><br /><pre name="code" class="javascript">$.ajax({ url: 'delProduct', type: 'get', dataType: 'json', data: {"id":"[{'id':3},{'id':5}]"}, </pre><br /><br />中将 data 一行换成: data: [{name: 'ids', value: arr.join('n')}],<br /><br />在后台 String[] ids = request.getParameter("ids").split("n");<br /><br />这样你就得到选中的 ID 了。</div><br />后台用的是struts,不是servlet<br />
解决方案
function getSelectedRows(table) { var ids = []; var rows = table.datagrid('getSelections'); for (var i = 0; i < rows.length; i++) { ids.push(rows[i].id); s.join('n')); return ids; } 我对easyui还是比较熟悉的,首先问个问题,你的删除不就是要最终从数据库中删除吗?2. 你用过sql语句中的in关键字吗?delete from TableA where id in (1,3,4,5,6);3. 你知道js的数组中有个join方法,那么你现在能联想到什么?对了,将你的id数组转换成 "1,2,3,4,5"的形式传到后台function getSelectedRows(table) { var ids = []; var rows = table.datagrid('getSelections'); for (var i = 0; i < rows.length; i++) { ids.push(rows[i].id); return ids.join(","); } 然后通过:$.ajax({url:'XXX.action?ids='+getSelectedRows(table),method:'POST',dataType:'json',success:function(msg){},error:function(msg){}...});
解决方案二:
引用后台用的是struts,不是servlet private String[] ids;public void setIds(String ids) {this.ids = ids.split("n"); }
解决方案三:
看到你的 getSelectedRows(table) 已经拿到了 选中行的 ID 。$.ajax({ url: 'delProduct', type: 'get', dataType: 'json', data: {"id":"[{'id':3},{'id':5}]"}, 中将 data 一行换成: data: [{name: 'ids', value: arr.join('n')}],在后台 String[] ids = request.getParameter("ids").split("n");这样你就得到选中的 ID 了。
解决方案四:
你已经在ajax里面设置返回值为JSON了,为什么还要使用eval?