2011-03-11 2 views
3

Я хочу, чтобы создать список сгруппированных Флажки следующим образом:список asp.net сгруппированных (вложенных) флажков из

[]Group1 
    [] Item1 
    [] Item2 
[]Group2 
    []Item1 
    []Item2 
    []Item3 

Здесь группа # и пункт # являются флажков. Кто-нибудь знает, как это сделать в asp.net. Я получаю данные из DataSet. Одно из ограничений заключается в том, что мне не разрешено использовать сторонний инструмент/элементы управления или jQuery.

Большое спасибо,

+0

Если Group1 проверяется также Элемент1 и Элемент2 следует проверить? Вы должны добавить более подробную информацию о своем требовании. Неясно, нужна ли вам клиентская функциональность для проверки подпозиций, если вам это нужно на serveriside или если вам нужен только макет, который выглядит сгруппированным. –

+0

Группы и элементы должны быть «checkable». Как они проверяются. Я могу управлять этим в javascript. Моя проблема заключается в том, как заполнить это на 1-м месте. «если вам это нужно на serveriside или если вам нужен только макет, который выглядит сгруппированным» - вот что я ищу. – daehaai

ответ

5

Использование повторителей (или вложенные ретрансляторы) для создания макета и Java-скрипт для beahavior. Например, скажем, ваш набор данных имеет две таблицы - «Группы» и «Элементы» и отношение внешних ключей между таблицами «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; 
    } 
} 

Отказ от ответственности: непроверенный код просто дать подсказку/идею подхода

+0

(DataRowView) Container.DataItem) .CreateChildView ("FK_Groups_Items") Связано ли это с внешним ключом в памяти DataTables? – daehaai

+0

Позвольте мне убедиться, что я все понимаю. (1) В элементе управления ретранслятора я связываю записи, записанные в группу записей Group и items. (2), то в групповом флажке он получит имя группы, а затем (3) во втором флажке он будет использовать источник данных для извлечения дочерних элементов с использованием ограничений FK? Пожалуйста, дайте мне знать, если я что-то упустил? Спасибо – daehaai

+0

@activebiz, внешний ретранслятор будет привязан к групповым таблицам так, чтобы он создавал каждую строку для группы (не связывайтесь с соединением, тогда вы получите внешние флажки для количества элементов). Внутренний контрольный список должен быть привязан к элементам для этой группы (следовательно, для навигации по внешнему ключу, если вы набрали наборы данных, тогда вы получите такой метод, как GetItemsRow). – VinayC

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