У меня есть элемент управления GridView (ASP.NET), который содержит переменное количество строк, а иногда и другой GridView. Существуют строки «заголовка», которые просто охватывают определенный класс CSS, и под каждым «заголовком» может быть любое количество <tr>
строк или даже дополнительных таблиц.
Сетка разделена на ячейки "заголовка" и затем обычные ячейки (есть также подзаголовки, но для моих целей они являются обычными ячейками). То, что мне нужно сделать, это получить список всех элементов (я могу отфильтровать его позже, начиная с основ), между одним элементом заголовка и следующим элементом заголовка.
Я пытался использовать метод nextUntil
, но он не работает должным образом и не дает мне все элементы между двумя заголовками (похоже, он только дает мне элементы внутри этой конкретной строки; там может быть много строк tr между каждой строкой заголовка).
Вот урезанная HTML-таблица, иллюстрирующая обычную настройку:
<table class="adminList">
<tr>
<td>
<table id="gvConcepts" rules="cols" cellspacing="0"
cellpadding="3" border="1">
<tbody>
<tr>
<td>
<div class="permissionsList">
<span id="lblConceptGroupName1" class="header">
API</span>
<input id="chkCanView1" type="checkbox">
View</input>
<input id="chkCanUpdate2" type="checkbox">
Update</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span id="lblConceptGroupName2" class="header">
Billing</span>
<input type="checkbox">View</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span id="lblConceptGroupName3" class="header">
Config</span>
<span class="subheading">Accessorials</span>
<input type="checkbox">View</input>
<input type="checkbox">Add</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span class="subheading">App Settings</span>
<input type="checkbox">View</input>
<input type="checkbox">Update</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span class="subheading">Carrier</span>
<input type="checkbox">View</input>
<input type="checkbox">Add</input>
<input type="checkbox">Update</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span id="lblConceptGroupName4" class="header">
Email Configuration</span>
<input type="checkbox">View</input>
<input type="checkbox">Add</input>
</div>
</td>
</tr>
<tr>
<td>
<div class="permissionsList">
<span class="subheading">Email Message</span>
<input type="checkbox">View</input>
<input type="checkbox">Update</input>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
Так, например, в разделе «Конфигурация электронной почты» есть четыре флажка (два непосредственно рядом со столбцом заголовка Email Configuration
и два в подзаголовке Email Message
). В области Config
есть семь (по два в Config, Accessorials, Настройки приложения и три в Carrier).
Как бы я поступил так? Я не уверен, что воссоздание таблицы лучшим способом является жизнеспособным вариантом в данный момент, но если это будет более простой способ (я понимаю, что это может быть причиной проблемы, так как структура HTML неэффективна), я рекомендую ее .