Jquery 如何获取所有ID';jqgrid的s,包括分页的?

Jquery 如何获取所有ID';jqgrid的s,包括分页的?,jquery,jqgrid,Jquery,Jqgrid,我是JQuery的新手 我正在尝试使用列出的函数 mya=$(“#列表”).getDataIDs();//Get All ID正在列出仅在当前视图中的ID。然而,我的网格是分页的。如何获取所有ID 这是我的密码: $(document).ready(function () { jQuery("#customer_list").jqGrid({ url:'jq_customer_list', datatype: "json", colNames:['C

我是JQuery的新手

我正在尝试使用列出的函数

mya=$(“#列表”).getDataIDs();//Get All ID
正在列出仅在当前视图中的ID。然而,我的网格是分页的。如何获取所有ID

这是我的密码:

$(document).ready(function () {

    jQuery("#customer_list").jqGrid({
      url:'jq_customer_list',
      datatype: "json",
      colNames:['Col1','Col2','Col3'],
      colModel:[
{name:'Col1',index:'Col1', width:100},
{name:'Col2',index:'Col2', width:80},
{name:'Col3',index:'Col3', width:75},
     ],
     rowNum:20,
     rowList:[5,10,20],
     mtype:"GET",
     rownumber:true,
     rownumWidth:40,
     pager: $("#customer_list_pager"),
     viewrecords: true,
     gridview: true,
     caption:"My Data",
     height: '50%',
     pagination:true

    }).navGrid('#customer_list_pager', { search:true, del: false, add: false, edit: false,searchtext:"Search" },
               {}, // default settings for edit
               {}, // default settings for add
               {}, // delete
               {closeOnEscape: true, multipleSearch: true, 
                     closeAfterSearch: true }, // search options
               {}
             ).navButtonAdd('#customer_list_pager',{
                 caption:"Export to Excel", 
                 buttonicon:"ui-icon-save", 
                 onClickButton: function(){ 
                   exportExcel($(this));
                 }, 
                 position:"last"
             });

    function exportExcel($id){
        alert('excelExport');
          var keys=[], ii=0, rows="";
          var ids=$id.getRowData();  // Get All IDs
          var row=$id.getRowData(ids[0]);     // Get First row to get the labels
          for (var k in row) {
            keys[ii++]=k;    // capture col names
            rows=rows+k+"\t";     // output each Column as tab delimited
          }
          rows=rows+"\n";   // Output header with end of line
          for(i=0;i<ids.length;i++) {
            row=$id.getRowData(ids[i]); // get each row
            for(j=0;j<keys.length;j++) rows=rows+row[keys[j]]+"\t"; // output each Row as tab delimited
            rows=rows+"\n";  // output each row with end of line
          }
          rows=rows+"\n";  // end of line at the end
          var form = "<form name='csvexportform' action='excelExport' method='post'>";
          form = form + "<input type='hidden' name='csvBuffer' value='"+rows+"'>";
          form = form + "</form><script>document.csvexportform.submit();</sc"+"ript>";
          OpenWindow=window.open('', '');
          OpenWindow.document.write(form);
          OpenWindow.document.close();
        }

    $("#customer_list").filterToolbar({autosearch:true });

    });
$(文档).ready(函数(){
jQuery(“客户列表”).jqGrid({
url:'jq_客户名单',
数据类型:“json”,
colname:['Col1'、'Col2'、'Col3'],
colModel:[
{名称:'Col1',索引:'Col1',宽度:100},
{名称:'Col2',索引:'Col2',宽度:80},
{名称:'Col3',索引:'Col3',宽度:75},
],
rowNum:20,
行列表:[5,10,20],
mtype:“获取”,
行数:对,
行宽:40,
传呼机:$(“#客户名单"传呼机”),
viewrecords:是的,
gridview:没错,
标题:“我的数据”,
身高:50%,
分页:正确
}).navGrid(“#客户列表pager”,{search:true,del:false,add:false,edit:false,searchtext:“search”},
{},//编辑的默认设置
{},//添加的默认设置
{},//删除
{closeOnEscape:true,多重搜索:true,
closeAfterSearch:true},//搜索选项
{}
).NavButtonAd(“#客户列表(寻呼机)”{
标题:“导出到Excel”,
按钮图标:“ui图标保存”,
onClickButton:函数(){
exportExcel($(此));
}, 
位置:“最后”
});
函数exportExcel($id){
警报(“excelExport”);
变量键=[],ii=0,行数=”;
var id=$id.getRowData();//获取所有id
var row=$id.getRowData(id[0]);//获取第一行以获取标签
for(第行中的var k){
键[ii++]=k;//捕获列名称
rows=rows+k+“\t”//以制表符分隔的形式输出每一列
}
rows=rows+“\n”//带行尾的输出标题

对于(i=0;i您使用
数据类型:“json”
loadonce:true
。因此,服务器负责排序和分页。因此,我将在中以CSV或XLSX实现仅服务器代码的导出。。jqGrid没有关于数据ID完整列表的信息或关于完整数据集的任何其他信息。您可以做的只是设置
窗口位置
到新url。url的服务器部分将生成CSV或XLSX,并将其返回到HTTP正文中,并将其他HTTP头(如
内容类型
设置为(“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”用于XLSX,“application/vnd.ms excel”用于XLS或“text/CSV”用于CSV)和“Content disposition”设置为“attachment;filename=youfilname.xslx”(另一个文件扩展名)。在这种情况下,web浏览器将使用相应的名称保存文件中的数据,并打开相应应用程序(例如Excel.exe)的文件.

正如Oleg所说,没有内置的方法返回网格中未显示的页面的所有网格ID

如果您真的需要网格中所有ID的列表,我建议创建一个自定义web方法来生成它们。然后,不使用网格,只需使用jQuery AJAX函数直接调用此方法,例如。因为在后端,您已经在使用查询为网格生成数据,只需调整该查询以返回I的列表D-或ID和相关数据,如有必要

但Oleg的另一个正确之处是,如果您真的要实现CSV/Excel输出,最好创建一个服务器端方法来实现,因为这样可以通过正确设置HTTP头、允许浏览器打开文件的外部应用程序等来创建更好的用户体验


这有帮助吗?

我在回答这个问题时迷失了方向。我有一个jqgrid,其中设置了一些过滤器和排序顺序,我希望在页面上的某个地方有一个按钮,将当前活动的过滤器连同excel标志一起发送到服务器,以便我的asp.net mvc代码(其中包含jqgridrequest和所述标志),可以知道发回一个文件。上面的内容看起来很接近我想要的,但我在window.location迷路了。@RandyMagruder:有很多方法可以解决你的问题,但答案取决于你做什么,你使用(可以使用)哪个版本的jqGrid,以及jqGrid的哪个forf(、商业版或旧版jqGrid我使用的是Asp.net Mvc Core的Lib.Aspnet.Core.Mvc.jqGrid.Core Nuget软件包附带的免费版本。我没有使用本地筛选,如果你的意思是加载所有数据并筛选客户端。每个排序、筛选和页面都作为请求发送回服务器,然后服务器调用pagin支持Web API服务来获取数据。我试图弄清楚postdata是如何被处理成通过http post发送的形式的。它只是通过post发送回来的JSON体吗?