JQGrid:没有获得rowId的位置

时间:2012-03-14 03:59:22

标签: jquery jqgrid

我使用的是jqGrid,而且我有一段时间在特定位置插入新行。我有rowId,但是当我调用以确定位置(行的索引)时,我得到一个空值。我正在使用桌子:

var grid = jQuery("#myTable");
grid.jqGrid({
    datatype: "local",
    colNames:['id','Type', 'Name', 'Total','In','Out'],
    colModel:[
            { name: 'id', index: 'id', hidden: true, align:"center"},     
            {name:'type',index:'type', width:10, sortable:true, align:"center"},
            {name:'name',index:'name', width:40, sortable:true, align:"center"},
            {name:'total',index:'total', width: 10, sortable:false, align:"center"},
            {name:'in',index:'in', width:10, sortable:true, align:"center"},
            {name:'out',index:'out', width:10, sortable:true, align:"center"}
    ],
    width: "600",
    height: "900"
  });

但是当我打电话时:

var dataIds = jQuery("#myTable").getDataIDs();

我回过头来看:

Level 3.xpusdscdw,Level 3.scoach3,Level 3.xpusdscvs,Level 3.xpusdscah,Level 3.xpusdsctotem,Level 3.xpusdscsc

但是当我尝试获取其中任何一个的行索引时,结果返回null。这就是我想要做的事情:

var position = jQuery("#myTable").getInd(rowId,false);
alert("Position is: "+position+" for "+rowId);

然后我检查并看到我得到了什么(带警报),我看到了:

Position is: false for Level 03.xpusdscvs

是什么给出的?当你传入false作为第二个参数时,getInd应该返回rowId的行索引。 一点帮助?

由于

1 个答案:

答案 0 :(得分:0)

我必须首先注意HTML中id的限制。它不能是任何字符串。首先,它必须在页面上唯一。接下来,它应该遵循CSS和HTML对标识符的要求。在不同版本的CSS和不同版本的HTML中,要求略有不同。例如,在CSS 2.1的规范中,您可以阅读以下内容(请参阅here):

  

在CSS中,标识符(包括元素名称,类和ID)   选择器)只能包含字符[a-zA-Z0-9]和ISO 10646   字符U + 00A0和更高,加上连字符( - )和下划线   (_);它们不能以数字,两个连字符或连字符开头   一个数字。标识符还可以包含转义字符和任何字符   ISO 10646字符作为数字代码(参见下一项)。例如,   标识符" B& W?"可以写成" B \& W \?"或" B \ 26 W \ 3F"。

在HTML5规范中,您可以阅读(参见here

  

id属性指定其元素的唯一标识符(ID)。

     

该值必须在元素主页中的所有ID中唯一   子树,必须包含至少一个字符。价值不能   包含任何空格字符。

此外,如果您使用.之类的特殊字符或jQuery选择器中的其他元字符,您必须使用两个反斜杠转义字符:\\。有关详细信息,请参阅here

jqGrid在内部使用方法$.jgrid.jqID来转义可能的元字符:

var myElement = $('#' + $.jgrid.jqID(someId));

如果您想让自己的生活更轻松,我建议您只在ID中使用字符[A-Za-z],数字[0-9]_-。此外,我建议你不要使用仅在个案中区分的ID。在大多数情况下,HTML不区分大小写,因此使用[a-z][A-Z]会更好。此外,你应该(但不是必须)使用这个字母作为id的第一个字符。简单的规则可以节省您的时间。

在您的情况下,xpusdscdwscoach3xpusdscvsxpusdscahxpusdsctotemxpusdscsc 等ID不带前缀 "Level 3"非常完美。

现在回到你的主要问题。如果您在HTML表格内的变量id中有rowid行,则可以使用以下代码获取行索引:

var rowid = "xpusdscdw";
var myRow = $("#" + rowid);
alert("row index: " + myRow[0].rowIndex);

在代码中,我使用rowid<tr>的{​​{1}}元素的id的事实。请参阅<table> here的说明。