【问题标题】:JQGrid data from Local Object array来自本地对象数组的 JQGrid 数据
【发布时间】:2012-12-20 12:06:58
【问题描述】:

我根据用户的选择创建了一个本地对象集合。动态数组应加载到 jqGrid。动态创建数组后,我尝试重新加载,但没有任何反应。这是代码-

$(document).ready(function () {

         var arrobj = [];           

         var JSONString = []; //[{"DOId":"0","DONo":"Please select","DealerCode":"0","Week":"0","Item":"0","Qty":"11","Date":"11"}]

         $("#<%=btnAdd.ClientID%>").click(function () {
             //Get values
             //Date
             var dlDt = $("#<%=tbRchngDt.ClientID%>").val();
             //Qty
             var dlQty = $("#<%=tbQty.ClientID%>").val();
             //item
             var dlItem = $("#<%=ddlItem.ClientID%>").val();
             //DO No
             var dlDOId = $("#<%=ddlDO.ClientID%>").val();
             var dlDO = $("#<%=ddlDO.ClientID%> option:selected").text();
             //Week
             var dlWeek = $("#<%=ddlWeek.ClientID%>").val();
             //Dealer
             var dlDealer = $("#<%=ddlDealer.ClientID%>").val();

             DistributionDtl = new Object();
             DistributionDtl.DOId = dlDOId;
             DistributionDtl.DONo = dlDO;
             DistributionDtl.DealerCode = dlDealer;
             DistributionDtl.Week = dlWeek;
             DistributionDtl.Item = dlItem;
             DistributionDtl.Qty = dlQty;
             DistributionDtl.Date = dlDt;


             //alert(DistributionDtl);
             arrobj.push(DistributionDtl);
             JSONString = JSON.stringify(arrobj);
             //alert(JSONString);
             $("#list").jqGrid('setGridParam',
             { datatype: "local",
                 data: JSONString
             }).trigger("reloadGrid");

         });
         jQuery("#list").jqGrid({ data: JSONString,
             datatype: "local",
             height: 150,
             width: 600,
             rowNum: 10,
             rowList: [10, 20, 30],
             colNames: ['DOID', 'Item', 'Qty', 'Date'],
             colModel: [{ name: 'DOId', index: 'DOId', width: 60, sorttype: "int" },
                                { name: 'Item', index: 'Item', width: 120 },
                                 { name: 'Qty', index: 'Qty', width: 80 },
                                  { name: 'Date', index: 'Date', width: 120}],
             pager: "#pager",
             viewrecords: true,
             caption: "Contacts"
         });

     });

【问题讨论】:

  • 我很挑剔,但值得一试的是,您的触发线中可能不需要将设置网格参数设置为在构建网格时已经设置的区域值。所以你可以 $("#list").jqGrid().trigger("reloadGrid");
  • thnx,但仍然无法正常工作
  • 您看到网格在 Firebug / Chrome 中请求新数据吗?您能否使用一些静态数据设置一个完全不同的文本数组来测试您的网格是否在更改时提取任何数据?
  • 是的,如果我使用与静态文本相同的数据,它可以工作。

标签: arrays object jqgrid local


【解决方案1】:

您应该使用以下任何一种方法将本地数据添加到 jqgrid:

  • addJSONData - 数据为 json
  • addRowData - 逐行添加,然后触发重新加载网格以重新计算分页 - 数据应该是 javascript 对象

可以在here 找到文档。 编辑:根据文档,您可以直接在“数据”参数中设置本地数据,但它应该是一个数组而不是 json 字符串,并且您的问题中没有 JSONString 的内容,所以问题可能来自于此。

【讨论】:

  • 汉克斯。 addRowData 正在工作。我正在做的是 jQuery("#list").addRowData(DistributionDtl.DOId, DistributionDtl);
  • 有问题。以这种方式添加数据后,当我选择一行时,它会选择第一行,如果我尝试删除一条记录,因为 Oleg 显示 here 所有行都被删除
  • 对不起,它现在工作正常。不知何故,所有行的 Rowid 都是相同的。这就是我遇到这个问题的原因。现在我已将 addrowdata 更改为 jQuery("#list").addRowData(slNo, DistributionDtl, "last");它工作正常。
  • 使用 addrowdata 时,添加所有行后不要忘记 `.trigger('reloadGrid'),因为例如,如果您的网格显示 10 行/页,而您添加了 11 行,在您重新加载之前,网格不会正确分页,因为它还没有完成分页计算。
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多