Где указать идентификаторы сервера, используя jqgrid / tabletogrid - PullRequest
0 голосов
/ 05 ноября 2011

Я использую метод tableToGrid из jqgrid для создания сетки из существующей HTML-таблицы. Моя таблица определена примерно так:

    <table id="myTable">
        <thead>
         <tr>
            <th>My Title</th>
        </tr>
        </thead>
        <tbody>
           <tr id="321"><td>Item 321</td></tr>
           <tr id="111"><td>Item 111</td></tr>
           <tr id="495"><td>Item 495</td></tr>
           ...
        </tbody>
    </table>

Все идентификаторы взяты из базы данных, и они понадобятся мне для обновления. Когда я вызываю tableToGrid, он, кажется, перезаписывает все мои идентификаторы своими собственными, которые просто отсчитывают от 1 до количества строк в таблице. Было бы хорошо, если бы методу onSelectRow был передан фактический идентификатор сервера, но это невозможно, что является лучшим способом сохранить идентификатор сервера в таблице, не отображать его и при этом иметь доступ к нему для обновлений и т. Д.

Мой вызов tableToGrid выглядит следующим образом:

tableToGrid("#myTable", { width:230, height: 500, onSelectRow: onSelectMethod, colModel: [{ name: 'MyTitle', index: 'MyTitle', sortable: false}] });

Спасибо.

1 Ответ

1 голос
/ 05 ноября 2011

Я лично предпочитаю создавать jqGrid напрямую вместо использования tableToGrid. В случае, если у вас нет описанных проблем.

Если вы предпочитаете использовать tableToGrid, я могу предложить вам использовать следующий прием. Текущий код из tableToGrid может получить значения rowid, но он получает их не из id атрибутов <tr>. Вместо этого он использует атрибут value из переключателя из первого столбца таблицы. Это будет понятно на вашем примере. Вы можете изменить исходную таблицу следующим образом

<table id="myTable">
  <thead>
    <tr>
      <th></th><th id="MyTitle">My Title</th>
    </tr>
  </thead>
  <tbody>
    <tr id="321"><td><input type="radio" name="sel" value="321"/></td><td>Item 321</td></tr>
    <tr id="111"><td><input type="radio" name="sel" value="111"/></td><td>Item 111</td></tr>
    <tr id="495"><td><input type="radio" name="sel" value="495"/></td><td>Item 495</td></tr>
  </tbody>
</table>

В примере атрибут value переключателя из первого столбца должен содержать rowid. Код JavaScript может быть

tableToGrid("#myTable", {
   width: 230,
   height: 'auto',
   onSelectRow: function (id) {
       alert(id);
   },
   colNames: ['My Title'],
   colModel: [
       { name: 'MyTitle', index: 'MyTitle', sortable: false}
   ]
});

Демо-версия теперь будет работать так же, как вы.

Использование дополнительного столбца с переключателем может показаться ненужным. Мне лично так не нравится. Если вы посмотрите код из tableToGrid, вы увидите, что это не сложно. Вы можете изменить его так, чтобы он получал rowids не от переключателей, а вместо id из <tr>.

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