0

我正在使用 jqgrid,并在其中添加了一个子网格,如下所示,

在此处输入图像描述

如您所见,
具有 11 和 13 列的行是主网格行

并且每一行都有感兴趣的子网格,添加记录元素显示为子网格添加弹出窗口

这是 subgrid 的代码,

subGridRowExpanded: function(subgrid_id, row_id) {
            var subgrid_table_id, pager_id;
            subgrid_table_id = subgrid_id+"_t";
            pager_id = "p_"+subgrid_table_id;
            $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
            jQuery("#"+subgrid_table_id).jqGrid({
                url:"shops?q=2&ShopID="+row_id,
                datatype: "xml",
                colNames: ['Interest'],
                colModel: [
                    //{name:"Id",index:"ShopID",width:80,editable:false,editoptions:{readonly:false,size:40}}, //Shop ID not required
                    {name:"id",index:"id",editable:true,edittype:"select",editoptions:{dataUrl:'shops?q=3&ShopID='+row_id},editrules:{required:true}}
                ],
                rowNum:10,
                pager: pager_id,
                width: '100%',
                height: '100%',
                scrollOffset: 0,
                sortname: 'num',
                sortorder: "asc",
                height: '100%',
                editurl:'shops?q=5&ShopID='+row_id
            });
            jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:true,del:true})
        },
        subGridRowColapsed: function(subgrid_id, row_id) {
            // this function is called before removing the data
            //var subgrid_table_id;
            //subgrid_table_id = subgrid_id+"_t";
            //jQuery("#"+subgrid_table_id).remove();
        }

问题是,当 subgrid 中有多个元素时,我可以选择它(我使用最新版本的 Chrome)但是当 subgrid 中只有一个元素时,我可以选择它(如果您注意到颜色差异,请参阅 subgrid element 'Gifts' - 在第 13 行下方选择),一旦选择,'Gifts' 可以被删除。

更新: 在 firefox 和 IE 中,只有第一行从子网格中选择

代码有问题吗?为什么子网格中有多个元素时我不能选择单个元素?

感谢您的时间,谢谢

4

1 回答 1

1

我想你有 id 重复的问题。HTML 不允许id在相同的 HTML 页面上使用具有相同值的属性。所有id属性的值必须是唯一的。我建议您使用 Chrome/IE 的开发者工具或使用 Firebug 来验证您是否有问题。您只需检查id您现在在<tr>网格和子网格的元素上拥有的属性。

另一方面,jqGrid 的所有行(所有<tr>元素)都成为id分配的属性。通常您必须id在响应中填写服务器端的url. 问题是一个人通常使用id来自数据库的值,但您通常id在数据库的一个表上而不是在数据库上的所有表上具有唯一性。因此,您可以轻松地遇到多个 jqGrid(或带有 subrird 的网格)获取具有 id 重复的行的情况。

解决问题的最简单方法是使用我建议idPrefix后在 jqGrid 中引入的选项。主要优点是您可以继续使用数据库中的原始id 值并使用jqGrid 中的属性,这将是唯一的,因为从服务器返回的值构建属性,但使用前缀。在答案中。所以我建议你对所有子网格使用不同的。例如,您可以在 subgrid 中使用(参见答案这个)。ididididPrefixesidPrefix: 's' + row_id + '_'

于 2012-10-11T12:50:31.123 回答