Используйте повторитель (или вложенные повторители), чтобы сгенерировать макет и java-скрипт для поведения. Например, предположим, что в вашем наборе данных есть две таблицы - Группы и Элементы и существует связь внешнего ключа между таблицами с именем «FK_Groups_Items». Тогда вы можете повторить, такие как
<ol>
<asp:Repeater ID="Groups" runat="server">
<itemtemplate>
<ul>
<asp:CheckBox runat="server" ID="Group" Text="'<%# Eval("Name") %>'" Value='<%# Eval("Value") %>' onclick="OnGroupClick">
<p class="nested">
<asp:CheckBoxList runat="server" ID="Items" DataSource='<%# ((DataRowView)Container.DataItem).CreateChildView("FK_Groups_Items") %>'> DataValueField="Value" DataTextField="Name" />
</p>
</ul>
</itemtemplate>
</asp:Repeater>
</ol>
и следующая функция js
function OnGroupClick(group) {
for(item in group.getElementsByTagName('input')) {
item.checked = group.checked;
}
}
Отказ от ответственности: непроверенный код только для того, чтобы дать подсказку / идею подхода