2009-10-28 16 views
0

데이터 테이블을 데이터 소스로 사용하여 체크 박스 목록에 의해 생성 된 모든 체크 박스의 ID를 얻으려면 어떻게해야합니까?체크 박스 목록 + 모든 체크 박스의 ID 가져 오기

체크 상자 목록의 "OnDataBinding"이벤트를 사용해야한다고 생각하지만 어떻게 도움이되는지는 알 수 없습니다.

나는 C#을 사용하고 내가 체크 박스리스트에 의해 생성 된 모든 확인란의 id의를 받고 생각하지 않는다

이 가능합니다, 그래서 무 도구의 길을가는 것이 옳은 일이라고 생각합니다.

아이디어가 있으십니까?

감사

답변

1

domReady 이벤트의 모든 체크 박스 목록에 클릭 이벤트 핸들러를 연결하는 것이 이상적입니다. MooTools를 사용하면 훨씬 간단한 기능을 만들 수 있습니다. 그러나 원하는 경우 코드를 그대로 유지하고 2 기능을 조금만 더 간단하게 만들 수 있습니다.

function ToggleSelection(ctrl, sender) { 
    var checkboxes = $(ctrl).getElements('input[type=checkbox]'); 
    checkboxes.set('checked', sender.checked); 
} 

function ToggleSelectAll(ctrl, sender) { 
    var fAllChecked = ($(sender).getElements('input:checked').length == $(sender).getElements('input[type=checkbox]').length) 
    $(ctrl).set('checked', fAllChecked); 
} 

당신은 한 번에 전체 요소 배열의 속성을 설정할 수 있습니다, 당신은 그들을 통해 루프 필요가 없습니다. 두 번째 함수에서는 총 체크 박스 수와 비교하여 검사되는 요소의 수를 확인하고, 일치하면 모든 요소가 검사됩니다.

+0

이것은 훨씬 더 좋습니다. 감사 – iJK

0

당신은 VB를 사용하거나 C# .. 당신은 목록 또는 문자열이라고 strchklist

VB.NET

For Each li In CheckBoxList1.Items 
     If li.Selected Then 
      strchklist += li.Id 
     End If 
    Next 

C 번호를 가질 수 있습니다 따라

에 태그를하시기 바랍니다 있습니까

foreach (ListItem li in CheckBoxList1.Items){ 
     If li.Selected 
      strchklist += li.Id ;} 
+0

죄송합니다. 언어를 태그하지 않았습니다. – iJK

+0

ListItem에 "ID"속성이 없으므로 작동하지 않습니다. 나 또한 li.Attributes [ "id"]를 시도하고 null을 반환합니다. – iJK

0

<asp:ListItem>은 실제로 컨트롤 자체가 아니기 때문에 ID가 없습니다. 클라이언트 스크립트에서 액세스하려면 참조 할 수있는 새 속성을 추가하십시오. (예, OnDataBinding 중) 그러나 이들은 ViewState에서 유지되지 않는다는 것을 기억하십시오!

정확히 달성하려는 것은 무엇입니까? 다소 정교하게 도울 수 있습니다.

+0

내가 갖고있는 것은 체크 박스 목록과 별도의 체크 박스 (모든 체크 박스 선택)입니다. 그래서 select all을 가진 체크 박스가 체크되었을 때, 체크 박스리스트에 의해 생성 된 모든 체크 박스를 체크 할 필요가있었습니다. 그래서, 체크 박스리스트에 의해 생성 된 체크 박스가 체크되지 않은 경우, 체크 된 경우 체크 박스를 모두 선택 해제해야합니다. 그래서 체크 박스 목록에 의해 생성 된 체크 박스를 알아야 할 필요가 있다고 생각합니다.이 방법을 사용하면 모든 체크 박스를 선택하거나 선택을 취소 할 수 있습니다 ... 나는 분명히하고 싶습니다. – iJK

+0

글쎄, 여기 있습니다 당신이 그것을 클라이언트 측에서하고 싶다면 jQuery를 사용하기에 좋은 곳입니다. 또한 대체 답변을 게시 해 드리겠습니다. – Bryan

0

완전히 다른 대답은 ...

CheckBoxList는 다른 컨트롤과는 달리 이상한 오리 ...의 비트가 정말 명백한 HTML 구조에 논리적 매핑이없는 것입니다. 그것은 실제로 미분 ID로 여러 확인란을 렌더링합니다. +는 "_"+ 을 itemIndex라는 CheckBoxList.ClientID로 그 ID가 생성 될 것으로 보인다.

페이지 소스를보고이를 확인할 수 있습니다. 내부적으로 개별 체크 박스 컨트롤의 ID는 인덱스 일 뿐이므로 CheckBoxList를 NamingContainer로 렌더링합니다. Reflector를 사용하면 CheckBoxList 컨트롤이 출력을 렌더링하는 방법을 확인할 수 있습니다.

여전히 jQuery에 대한 좋은 장소입니다. 이제는 ID를 쉽게 알 수 있습니다.

+0

예, JQuery를 사용하면 매우 쉽게 만들 수 있습니다. 그러나, 나는 무언가 도구와 함께 제공되는 CMS 솔루션 (kentico)을위한 웹 파트를 만들고 있는데 JQuery와 충돌한다. – iJK

+0

안녕하세요 Bryan, 나는 당신이 말한 것을 들었고 나는 왜 그것을 "음매 도구"에 쓰는 지 생각하지 않았습니다. jquery가 작동하지 않는 이유를 결정할 때 좌절감을 느꼈던 것을 기억하기 때문에 생각합니다. 그래서 작동 시키지만 체크 박스 목록에 의해 생성 된 체크 박스의 ID를 모두 알 필요는 없습니다. – iJK

0

는 오늘 아침에이 일을 생각을 (cblUSEquities이 체크 박스 목록)

cblUSEquities.Attributes.Add("onclick", "javascript:alert('Clicked');"); 

이 체크 박스 목록이 생성하는 테이블에 경고를 추가 일어났다. 한 가지 유의할 점은 경고가 두 번 표시된다는 것입니다. 확인란의 텍스트를 클릭하면 확인란을 클릭하면됩니다. 나는이 솔루션이 나를 위해 일할 것이라고 생각한다.

BTW, 위 코드가 작동 것이라고 생각하지 ...

P.S 내가 주석 상자를 사용하여 수행 할 수없는 코드를 작성하려고했기 때문에 자신의 질문에 대답했습니다.

StackOverFlow의 정신으로 나는 시나리오에서 작동하지만 무언가에 대한 설명이 다릅니다. 나는 무엇을해야합니까? 질문을 수정하고 답변으로 표시 하시겠습니까?

0

mootools를 사용하여이 작업을 수행 할 수있었습니다. 이것은 코드입니다. 알고 보니 내가 체크 박스리스트에 의해 생성 된 모든 체크 박스의 id의 알 필요하지 않은 것처럼 자바 스크립트 기능

//Binding event to the checkbox list 
cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID)); 

//binding event to the select all checkbox 
chkAllUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelection('{0}', this);", cblUSEquities.ClientID)); 

를 호출

function ToggleSelection(ctrl, sender) 
{ 
    var cblCtrl = $(ctrl); 
    var Allcbs = cblCtrl.getElements('input'); 

    for(var i=0; i<Allcbs.length; i++) 
     Allcbs[i].checked = sender.checked; 
} 

function ToggleSelectAll(ctrl, sender) 
{ 
    var AllTrueCount = 0; 
    var cblCtrl = $(ctrl); 
    var Allcbs = sender.getElements('input'); 

    for(var i=0; i<Allcbs.length; i++) 
     if(Allcbs[i].checked) 
      AllTrueCount++; 

    if(AllTrueCount == Allcbs.length) 
     cblCtrl.checked = true; 
    else 
     cblCtrl.checked = false; 
} 

C# 코드. 나는 체크 박스 목록이 생성하는 테이블에 onclick 이벤트를 추가합니다이 라인

cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID)); 

하여 이러한 체크 박스에 온 클릭 자바 스크립트를 추가 할 수 있었다.

관련 문제