我正在使用 Rails 应用程序。我正在使用 jqgrid 作为我的 html 响应。我需要导出选定的行(使用网格中显示的复选框)。我使用 rails fastercsv lib 来提取 .csv 中的数据,但它正在导出页面上显示的所有行。如何利用网格上可用的复选框仅导出选定的行?
我是 rails 和 jqgrid 的新手,所以任何回复都将不胜感激。
谢谢
我正在使用 Rails 应用程序。我正在使用 jqgrid 作为我的 html 响应。我需要导出选定的行(使用网格中显示的复选框)。我使用 rails fastercsv lib 来提取 .csv 中的数据,但它正在导出页面上显示的所有行。如何利用网格上可用的复选框仅导出选定的行?
我是 rails 和 jqgrid 的新手,所以任何回复都将不胜感激。
谢谢
这就是如何从 jqgrid 中获取所选行的方法。
var selRowIds = grid.jqGrid('getGridParam', 'selarrrow');
if(selRowIds.length>0)
{
for( var i=0;i<selRowIds.length;i++){
var Name=getCellValue(selRowIds[i],'Name');
var Company=getCellValue(selRowIds[i],'Company');
$.ajax({
type: 'POST',
url: '@Url.Action("ExportToCSV")',
contentType: 'application/json; charset=utf-8',
data:JSON.stringify({Name:Name,Company:Company}),
dataType: "json",
success:function(){
grid.trigger("reloadGrid");
}
});
}
}
现在我将解释这段代码是如何工作的。我在我的 jqgrid 参数中使用 multiselect:true ,所以我可以在每一行中获取我的复选框。现在,如果我检查 5 行,它们将被选中,我可以使用 selarrow 获取它们的行 ID,就像我在代码中所做的那样,然后假设你的 jqgrid 列中有名称和公司,那么我可以获得它们的值就像我在我的代码中所做的那样,然后您可以使用 jquery 向服务器方法(exportToCSV)发出 ajax 请求,在您的情况下将在 ruby-rails 中。
从第 24-44 行开始。需要使 async:false 意味着同步 ajax 调用是解决方案。