【问题标题】:Retrieve the column values of jqgrid dynamically动态检索jqgrid的列值
【发布时间】:2015-08-25 06:59:24
【问题描述】:

这是我的 jqGrid 代码。

$("#grid").jqGrid({
                        url:$url,
                        editurl:"serivce.php",
                        datatype: "json" ,
                        mtype:"post",
                        colNames:["test"],                             
                        colModel:[
                            {name:"test",index:"test", width:150,align:"center", editable:true, 
                                edittype:"select", editoptions:{size:1, dataUrl:"../someurl.php?param1=parm } 
                            },
                        ],
                        rowNum:10,
                        rowList:[10,20,30],
                        add: {
                            top:30,
                            left:20
                        },
                        edit:{
                            top:30,
                            left:20
                        },   
                        jqModal: true,
                        pager: "#page",
                        sortname: "ID",
                        viewrecords: true,
                        sortorder: "ASC",                            
                        shrinkToFit: true,
                        height: "auto"
                    });  ';



$("#grid").setGridParam({ondblClickRow: function(rowid) {
                                var rowData = jQuery("#grid").getRowData(rowid);                                     
                                    jQuery(this).jqGrid("editGridRow", rowid,
                                    {   closeAfterEdit:true,
                                         beforeShowForm: function(form){
                                            // force the data value retrieve here 
                                         },
                                        afterSubmit:function() { $("#grid").jqGrid("setGridParam", {datatype: "json"});
                                                                 return true;
                                                               }       
                                    });
                            } // end of ondblClickRow});
                          }); ' ;

dataUrl的服务器php代码:

$values = getWorkingValues($param);
echo '<select>';
foreach($values as $value){
    echo "<option value='" . $value . "'>" .$value . "</option>"; 
}
echo "</select>";

如何强制检索“test”列中的值?
例如,每次打开网格进行编辑时?
我使用的版本是 jqGrid 3.6。 谢谢

【问题讨论】:

  • 您目前的问题是什么? dataUrl 会不会被调用?您是否需要发送每行不同的param1?您是否有缓存问题(例如dataUrl 将被加载一次并且不会每次都被检索)? jqGrid 的哪个分支(free jqGridGuriddo jqGrid JS 或版本
  • 谢谢奥列格。我的问题是这些值被缓存了。我想在 editGridRow 时强制通过 dataUrl 更新值。我正在使用表单编辑。
  • 您使用哪个版本的 jqGrid? 您从哪里开始 editGridRow 的代码?您使用editGridRow 的哪些选项?您用于测试的网络浏览器是什么?您是否在dataUrl 的响应的HTTP 标头中设置和缓存选项(Cache-Control)(请参阅您的服务器代码)。您应该点击问题下方的“编辑”链接,然后修改/附加附加信息的文本。
  • 我使用的是 jqGrid 3.6。有关editGridRow,请参见上文。我用的是chrome,我没有设置dataUrl响应的HTTP头缓存选项,请检查服务器代码。
  • 您应该将 jqGrid 更新到 7 年前的更新版本。这是IE4和启动IE5的时间。你还在使用这些旧版本的网络浏览器吗?现在用蒸汽车不好。我建议您更新到free jqGrid 4.9.2。您可以通过将 URL 替换(至少是临时的)jqGrid 文件来尝试它。见the wiki article

标签: jqgrid jqgrid-php


【解决方案1】:

您可以尝试将recreateForm: true选项添加到editGridRow的选项中(靠近closeAfterEdit:true)。

我强烈建议您更新 jqGrid。 jqGrid 3.6 已经 7 岁了,这在 Web 开发中非常有用。一个在 IE4 和 IE5 刚刚发布的时候。现在不支持来自网络浏览器的否。因此,您尝试使用 Web 开发的石器时代的版本。您甚至无法找到有关旧版本的文档。我建议您更新到free jqGrid 4.9.2,您可以从GitHubNuGetnpm 下载它,或者直接从CDN 使用(参见the wiki article)。顺便说一下recreateForm选项的含义在jqGrid的不同版本中是不同的。如果您使用免费的 jqGrid,那么您将不需要使用recreateForm: true 选项来解决问题。

A 建议您另外在dataUrl 的服务器响应中设置Cache-Control: private, max-age=0 HTTP 标头。这样您就可以确保之前的请求不会被缓存在客户端,并且Web浏览器每次都会发出相应的Ajax请求。

【讨论】:

  • 通过添加 recreateFrom:true 解决了我的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-04-01
  • 2013-04-17
  • 2011-03-25
  • 1970-01-01
  • 2011-10-08
  • 2011-01-17
  • 1970-01-01
  • 2012-10-22
相关资源
最近更新 更多