2011-02-09 3 views
0

Я использую функцию tableToGrid, а также функцию viewGridRow. Когда вызывается метод viewGridRow, диалоговое окно отображается правильно. Но при пейджинге через записи с помощью кнопок пейджера ИЛИ, когда вы закрываете диалог и выполняете метод viewGridRow в другой записи, значения для всех столбцов, имена которых имеют пробел («») в них, не обновляются. Они сохраняют значение, которое было размещено там, при первом выполнении viewGridRow. Значения для всех столбцов, имена которых не имеют места, обновляются так, как должны.jqgrid viewGridRow ошибка?

Я пробовал recreateForm: true (хотя это свойство метода editGridRow, а не метода viewGridRow), и это не решило проблему. Также пробовали различные, полу-случайные комбинации других настроек.

Ниже приведен мой код. Идеи?

tableToGrid("#mytable", height:'400', 
ondblClickRow: function(rowid,iRow,iCol,e) { 
jQuery("#mytable").viewGridRow(rowid, {closeOnEscape:true}); 
} 
}); 
<table id="mytable"> 
<thead> 
<tr class="header"> 
<th id="CustomerID">CustomerID</th> 
<th id="Account ID">Account ID</th> 
<th id="Customer">Customer</th> 
<th id="System">System</th> 
<th id="Make/Model">Make/Model</th> 
<th id="Modality">Modality</th> 
<th id="Last Login">Last Login</th> 
<th id="Attachments">Attachments</th> 
<th id="Alerts">Alerts</th> 
<th id="Last Log Entry">Last Log Entry</th> 
<th id="Last HE Level">Last HE Level</th> 
<th id="HE Level Threshold">HE Level Threshold</th> 
<th id="DBOD Threshold">DBOD Threshold</th> 
<th id="HE Data Latency">HE Data Latency</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td>1</td> 
<td>32222222</td> 
<td>ABC Company</td> 
<td>Smith Warehouse Bay #1</td> 
<td>Make/Model</td> 
<td>MRI</td> 
<td>Dec 20 2010 12:18PM by Frank Smith</td> 
<td>0</td> 
<td>0</td> 
<td></td> 
<td></td> 
<td>60</td> 
<td>0.35</td> 
<td></td> 
</tr> 
… 
</tbody> 
</table> 

ответ

0

Ваша ошибка в том, что вы явно определить идентификаторы для <th> элементов <table>, которые преобразовываются в jqGrid. Как вы можете видеть из исходного кода функции tableToGrid (наиболее интересными являются the lines 37-38, свойства столбца name и index будут получать из элементов <th>, если они существуют. Иды, имеющие пробелы, поддерживаются jqGrid, потому что они не работают во многих селекторов JQuery.

Пожалуйста, прочтите также the reference, который описывает ограничения в идентификаторах CSS. вы должны следовать ограничениям.

Так что я рекомендую вам просто удалить идентификатор атрибуты из <th> элементов или выбрать другие значения без пробелов для идентификаторов.

+0

Спасибо, Олег. Но я должен был определить идентификаторы в элементах , потому что я также использую setColProp и другие методы, для которых мне нужно идентифицировать определенные столбцы. Когда я удаляю идентификаторы в элементах , эти методы терпят неудачу. Есть ли другой способ определения конкретных столбцов, кроме назначения идентификаторов элементам ? – Octavient

+0

Ой, подождите. Понимаю. Вы можете по-прежнему ссылаться на столбец по имени ( RecordID, но он все еще не может иметь пробелов в имени. Не существует способа избежать пробелов (пробовал лидирующую обратную косую черту, но это не сработало) ...? – Octavient

+0

@ user569095: В строках 37-38 кода (см. Мой ответ) вы увидите, что 'tableToGrid' строят имена относительно замены пробелов на« _ ». Например,« Account_ID »вместо« ID учетной записи », Вы можете получить доступ к столбцу с именем. – Oleg

Смежные вопросы