0

我正在使用 Rails 应用程序。我正在使用 jqgrid 作为我的 html 响应。我需要导出选定的行(使用网格中显示的复选框)。我使用 rails fastercsv lib 来提取 .csv 中的数据,但它正在导出页面上显示的所有行。如何利用网格上可用的复选框仅导出选定的行?

我是 rails 和 jqgrid 的新手,所以任何回复都将不胜感激。

谢谢

4

2 回答 2

1

这就是如何从 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 中。

于 2012-08-24T09:07:16.540 回答
0

https://github.com/kumarsaurabh20/nextGenBiosensors/blob/master/app/views/oligo_sequences/index.html.erb#L26

从第 24-44 行开始。需要使 async:false 意味着同步 ajax 调用是解决方案。

于 2013-10-29T10:15:10.957 回答