JQGrid: не удается получить позицию с rowId - PullRequest
0 голосов
/ 14 марта 2012

Я использую 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

Но когда я пытаюсь получить индекс строки любого из них, результат возвращается к нулю. Вот что я пытаюсь сделать:

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

А потом я проверяю и вижу, что я получил (с предупреждением), я вижу это:

Position is: false for Level 03.xpusdscvs

Что дает? getInd должен возвращать индекс строки rowId, когда вы передаете false в качестве второго параметра. Небольшая помощь?

Спасибо

1 Ответ

0 голосов
/ 14 марта 2012

Я должен начать с замечания, какие ограничения имеет id в HTML.Это не может быть любая строка.Прежде всего это должно быть уникальным на странице.Далее следует следовать требованиям CSS и HTML к идентификаторам.Требования немного отличаются в разных версиях CSS и разных версиях HTML.Например, в спецификации CSS 2.1 вы можете прочитать следующее (см. здесь ):

В CSS идентификаторы (включая имена элементов, классы и идентификаторы в селекторах) могутсодержать только символы [a-zA-Z0-9] и символы ISO 10646 U + 00A0 и выше, плюс дефис (-) и подчеркивание (_);они не могут начинаться с цифры, двух дефисов или дефиса, за которым следует цифра.Идентификаторы также могут содержать экранированные символы и любые символы ISO 10646 в виде числового кода (см. Следующий пункт).Например, идентификатор "B & W?"может быть написано как "B \ & W \?"или "B \ 26 W \ 3F".

В спецификации HTML5 вы можете прочитать (см. здесь )

Атрибут id определяет его элементуникальный идентификатор (ID).

Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ.Значение не должно содержать пробелов.

Кроме того, если вы используете специальные символы, такие как . или другие метасимволы внутри селекторов jQuery, вы должны экранировать символ с помощью двух обратных косых черт: \\.См. здесь для получения более подробной информации.

jqGrid внутренне использует метод $. Jgrid.jqID для экранирования возможных метасимволов:

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

Если вы хотите сделать его жизнь проще, я бы порекомендовал вам использовать только символы [A-Za-z], цифры [0-9] или _ или - внутри идентификаторов.Кроме того, я бы порекомендовал вам не использовать идентификаторы, которые различаются только в случае.HTML в большинстве случаев нечувствителен к регистру, поэтому лучше использовать [a-z] или [A-Z].Кроме того, вы должны (но не должны) использовать букву в качестве первого символа идентификатора.Простое правило может сэкономить ваше время в будущем.

В вашем случае идентификаторы, такие как xpusdscdw, scoach3, xpusdscvs, xpusdscah, xpusdsctotem, xpusdscsc безпрефикс "Level 3" идеален.

Теперь вернемся к вашему основному вопросу.Если у вас есть id строки в переменной rowid, которая находится внутри таблицы HTML, вы можете использовать следующий код для получения индекса строки, если строка:

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

В коде, который я используютот факт, что rowid является идентификатором <tr> элемента <table>.См. Описание rowIndex здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...