【问题标题】:JQGrid: Failing to get position with rowIdJQGrid:无法使用 rowId 获得位置
【发布时间】:2012-03-14 03:59:21
【问题描述】:

我正在使用 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 的行索引。 有点帮助?​​

谢谢

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我必须首先说明 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)。

    该值在元素的 home 中的所有 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 是完美的。 p>

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

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

    在代码中,我使用rowid<table><tr> 元素的ID。见rowIndexhere的描述。

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2011-04-18
      • 2016-02-18
      相关资源
      最近更新 更多