jqGrid的选择特定的行可能会或可能不可见(JqGrid select particular ro

2019-09-22 09:21发布

我有一个jqGrid的和有项目的几页。 我有可能会在一个页面上,也可以在其他页面的某个地方被掩埋行的ID。

鉴于该行的ID,如何编程选择这样的行? 我使用的是按钮的点击事件,如下

.on("click", function(){
     var myId = $(this).attr("id");
     $("#studentGrid").jqGrid.setSelection(myId, true);
});

当我按一下按钮我得到如下日Firebug控制台。

类型错误:this.each不是一个函数

有任何想法吗 ?

编辑
所以,我选择只有一个记录重新填充网格。 事情是我没有使用本地数据。 我的数据类型是“JSON”。 像这样

  $("#studentGrid").jqGrid({
                url: '<c:url value="/students/studentjsondata"/>',
                datatype: 'json',
                height: 'auto',
                colNames:['id','First Name', 'Last Name', 'Other Name' ,'Date Of Birth', 'Gender'], 
                colModel:[ 
                        //Bla Bla Bla
                ],
                rowNum:10,
                autowidth: true,
                pager: '#pager', 
                sortname: 'id', 
                viewrecords: true, 
                sortorder: "desc",
                caption:"Students",
                emptyrecords: "Empty Records",
                subGrid: true,
                /* <![CDATA[ */ 
                onSelectRow: function(id){ 
                    if((lastsel != 0)&&(id!==lastsel)){ 
                        $("#studentGrid").jqGrid('collapseSubGridRow', lastsel);                
                    } 
                    lastsel=id; 
                }/* ]]> */ ,
                subGridOptions: { 
                    "plusicon" : "ui-icon-triangle-1-e", 
                    "minusicon" : "ui-icon-triangle-1-s", 
                    "openicon" : "ui-icon-arrowreturn-1-e", 
                    "reloadOnExpand" : true, 
                    "selectOnExpand" : true  
                },
                subGridRowExpanded: function(subgrid_id, row_id) {
                    //Bla Bla Bla
                }
    });

我有JSON字符串我要重新填充与电网。 如何重新初始化这个新的数据网格。 我下面的JSON字符串与相应的逻辑如下,但没有任何反应。

{'page':'1', 'records':'1', 'total':'1', 'rows':[{'id':'7385', 'cell': ['Max', 'Payne', '', 'September 16, 2012', 'Male']}]}


.on("click", function(){
  var myNewData = eval('(' + $(this).attr("griddata") + ')');
  $("#studentGrid").jqGrid('setGridParam', { datatype: 'local', data: myNewData}).trigger('reloadGrid');
 });    

Answer 1:

你可以尝试只加入电话setSelection的内部方法loadComplete的的$("#studentGrid")网格:

loadComplete: function () {
    $(this).jqGrid("setSelection", myId, true);
}

如果与ID等于行myId在当前页面中没有,那么没有行会被选中。 如果与ID行= myId是做好当前页面,则行将被选中的。 是不是你想要的?



Answer 2:

您只能选择一排,它是当前页面上。

你可以将选定的行存储在一个阵列(或其他数据结构)并选择任意“选择”行,当您更改页面-这个答案应该有所帮助: jqGrid的:如何在不同的页面中使用多选

或者你可以做你的建议是什么,只显示一行,根据您的要求。



Answer 3:

我只是猜测这里 -

  1. 如果你已经有了ID,用于需要选择什么,为什么不把它在内存中? 或许饼干或HTML5 locaStorage?

  2. 然后使用这些值来设置所选行作为当关注行显示在当前页面。

  3. 您可以随时系列化你“选择的ID的”来回页面请求之间(如果不使用AJAX)



Answer 4:

所以,球员,谢谢大家的意见。 他们引导我这个答案。 这个链接是相当有帮助。 因此,这是使用JSON字符串更新非本地数据的代码。

.on("click", function(){
    $("#studentGrid").jqGrid('setGridParam', { jsonReader: { repeatitems: false }, datatype: 'jsonstring', datastr: $(this).attr("griddata")}).trigger('reloadGrid');
});

希望它可以帮助别人OTH那里。 现在我需要做的是找出如何去除这些paramiters重新正确的网格。 这是通过使用默认jsonReader完成如下。

$("#studentGrid").jqGrid('setGridParam', {    jsonReader : {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: true,
cell: "cell",
id: "id",
userdata: "userdata",
subgrid: {root:"rows", 
repeatitems: true, 
cell:"cell"
 }
} , datatype: 'json', datastr: null});


文章来源: JqGrid select particular row which may or may not be visible