Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jqGrid中选择另一行时,默认选定行的颜色不变_Java_Javascript_Jqgrid - Fatal编程技术网

Java 在jqGrid中选择另一行时,默认选定行的颜色不变

Java 在jqGrid中选择另一行时,默认选定行的颜色不变,java,javascript,jqgrid,Java,Javascript,Jqgrid,我有一个jgGrid,在其中我将在页面加载时默认选择第一行(所选行高亮显示为黄色)。现在,当我在同一jqGrid中选择其他行时,当前选中的行和默认选中的行都用黄色高亮显示。理想情况下,当用户选择另一行时,先前选择的行不应高亮显示为黄色 下面是更好地解释的快照: 默认选中的行高亮显示为黄色(在页面加载中): 当前选定行和默认选定行均高亮显示为黄色: 以下是我的jqGrid代码: $("#discActionHistGrid").jqGrid({ url:contextRoot+'dis

我有一个jgGrid,在其中我将在页面加载时默认选择第一行(所选行高亮显示为黄色)。现在,当我在同一jqGrid中选择其他行时,当前选中的行和默认选中的行都用黄色高亮显示。理想情况下,当用户选择另一行时,先前选择的行不应高亮显示为黄色

下面是更好地解释的快照:

默认选中的行高亮显示为黄色(在页面加载中):

当前选定行和默认选定行均高亮显示为黄色:

以下是我的jqGrid代码:

$("#discActionHistGrid").jqGrid({
    url:contextRoot+'discActHist',
    datatype: 'json',
    jsonReader: {repeatitems: false},
    mtype: 'POST',
    colNames: ['Record ID','Close date','Final Action','Summary','Title','Council','Retraction'],
    colModel: [
               { name: 'referralId', index: 'referralId', width: 25 },
               { name: 'closureDate', index: 'closureDate', width: 30, formatter: function(cellValue){return $.datepicker.formatDate('mm-dd-yy', new Date(cellValue));}},                   
               { name: 'finalAction', index: 'finalAction', width: 30 },
               { name: 'summary', index: 'summary', width: 50, cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal;line-height: 1.3em;"'; } },
               { name: 'title', index: 'title', width: 30 },
               { name: 'councilNm', index: 'councilNm', width: 30 },
               { name: 'retract', index: 'retract', width: 30, formatter: function (cellvalue, options, rowObject) {return '<a href="'+ contextRoot +'dart/approved">Retract</a>';} }
    ],loadError: function(xhr,st,err) {
        alert(err);
    },gridComplete: function() {
        $(this).setSelection(1, true);
    },onSelectRow : function(rowid, status, e) {
        var selRow = $(this).getGridParam("selrow");
        var selReferralId = $(this).getCell(selRow, 'referralId'); 
        $("#referralDetailsTab").load(contextRoot+"refDetailsTab?refId=" + selReferralId );
    },
    pager: '#discActionHistPager',
    sortorder: 'desc',
    sortname: 'closureDate',
    gridview: true,
    viewrecords: true,
    loadonce: true,
    hoverrows : true,
    autowidth: true,
    height: 'auto',
    rowNum: 3,
    shrinkToFit: true,
    altRows:true
});

$("#discActionHistGrid").jqGrid('navGrid','#discActionHistPager',
   {
    edit:false,
    add:false,
    del:false,
    search:false,
    refresh:false
});

我认为对什么是rowid存在很大的误解,jqGrid总是需要为每一行提供唯一的
id

jqGrid设计用于在网格中显示来自后端(来自数据库)的项。你的情况正是如此。特别是对于这种情况,jqGrid的大多数回调都使用rowid作为参数。如果正确填充网格,则rowid的值应与保存数据的数据库表中的
id
的值相同

只有当jqGrid有错误的输入数据且不包含id信息时,jqGrid才必须使用一些本地生成的唯一id。由于与旧版本jqGrid的兼容性问题,它仍然使用数字1、2、3作为rowid

什么是rowid?网格是基于HTML
构建的。表格正文中的行是HTML中的
。jqGrid的实现必须为
元素(行的id)的
id
属性分配一些唯一的值。可以将文档中的
id
值命名为rowids

在您的情况下,您应该在您使用的
jsonReader
中包含
id:“referralId”
,或者(最好两者都包含)在
referralId
列的定义中包含
key:true
属性:

{ name: 'referralId', key: true, width: 25, sorttype: 'integer' }
更改后,您可以简化
onsetrow
回调到的代码

onSelectRow: function (rowid) {
    $("#referralDetailsTab").load(contextRoot + "refDetailsTab?refId=" + rowid);
}

使代码更干净,并且独立于具有rowid的值

jqGrid中没有“默认选定行”。如果要在加载网格后选择网格上的第一行,可以将
gridComplete
的代码替换为以下代码

loadComplete: function () {
    if (this.rows.length > 1) {
        // select the first row of the grid
        $(this).jqGrid("setSelection", this.rows[1].id, true);
    }
}
(请参见我在哪里描述我为什么建议使用
loadComplete
而不是
gridComplete


我希望在更改后,您描述的问题将消失。

感谢Oleg提出的清理我的代码的建议。你真是个天才!但我在查询中提到的最初问题仍然存在(即使在我选择(并高亮显示)网格中的另一行后,网格加载上选择的第一行仍保持高亮显示。还想提及:仅当我显式单击所选(并高亮显示)行时)第一行,然后单击其他行,一切正常,即只有当前选定的行高亮显示为黄色。@tarares:我无法在测试中重现该问题。原因可能与URL
ontextRoot+'disacthist'
返回的特定数据有关。您能测试一些重现p的JSON数据吗问题?
onSelectRow: function (rowid) {
    $("#referralDetailsTab").load(contextRoot + "refDetailsTab?refId=" + rowid);
}
onSelectRow: function (rowid) {
    $("#referralDetailsTab").load(contextRoot + "refDetailsTab?refId=" +
        encodeURIComponent(rowid));
}
loadComplete: function () {
    if (this.rows.length > 1) {
        // select the first row of the grid
        $(this).jqGrid("setSelection", this.rows[1].id, true);
    }
}