2011-03-11 3 views
3

나는 다음과 같이 그룹화 된 체크 박스의 목록을 만들려면 :asp.net 목록

여기
[]Group1 
    [] Item1 
    [] Item2 
[]Group2 
    []Item1 
    []Item2 
    []Item3 

그룹 번호 및 항목 #이 체크 박스입니다. 누구든지 asp.net에서 이것을 수행하는 방법을 알고 있습니까. DataSet에서 데이터를 가져오고 있습니다. 하나의 한계는 타사 도구/컨트롤 또는 jQuery를 사용할 수 없다는 것입니다.

많은 감사,

+0

그룹 1이 항목 1과 항목 2도를 선택하면 확인해야합니까? 요구 사항에 대한 자세한 내용을 추가해야합니다. 하위 항목을 확인하기 위해 클라이언트 측 기능이 필요한지 여부는 서버 측에서 필요하거나 그룹 모양 만 필요로하는 경우에는 분명하지 않습니다. –

+0

그룹 및 항목은 '확인 가능'해야합니다. 확인 방법 javascript에서이를 관리 할 수 ​​있습니다. 내 문제는 이것을 1 위 자리에 채우는 방법입니다. "당신이 serveriside에 그것을 필요로하는 경우 또는 단지 레이아웃 모양이 그룹화되어 있어야하는 경우"- 이것은 내가 찾고있는 것입니다. – daehaai

답변

5

사용 리피터 (또는 중첩 된 리피터) 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") 메모리 데이터 테이블의 외래 키 제약 조건과 관련이 있습니까? – daehaai

+0

모든 것을 이해하게하겠습니다. (1) 리피터 제어에서 나는 메모지에 가입 된 그룹과 아이템 테이블 레코드를 묶는다. (2) 그런 다음 그룹 체크 박스에서 그룹 이름을 얻을 것입니다. (2) 두 번째 체크 박스에서 FK 제약 조건을 사용하여 자식 멤버를 다시 얻으려면 데이터 소스를 사용합니까? 제가 여기에 뭔가 빠졌는지 알려주세요. 감사합니다 – daehaai

+0

@activebiz, 바깥 쪽 리피터는 그룹 테이블에 바인드되어 그룹에 대한 각 행을 만듭니다 (조인으로 바인드하지 말고 항목 수에 대한 외부 체크 박스를 얻습니다). 내부 검사 목록은 해당 그룹의 항목에 바인딩되어야합니다 (따라서 외래 키를 사용한 탐색, 입력 된 데이터 집합이있는 경우 GetItemsRow와 같은 메서드가 표시됨). – VinayC