2011-07-04 6 views
0

Repeater를 사용하고 있습니다 :checkbox.checkedchanged 이벤트 질문. 어떤 체크 박스가 선택되었는지/변경되지 않았는지 어떻게 알 수 있습니까?

<form id="form1" runat="server"> 
    <div> 
     <asp:Repeater ID="repeater" runat="server" OnItemDataBound="repeater_ItemDataBound"> 
      <ItemTemplate> 
       <tr> 
        <td> 
         <asp:CheckBox ID="checkbox" runat="server" AutoPostBack="false" OnCheckedChanged="Check_Clicked" data-id='<%# DataBinder.Eval(Container.DataItem, "ProfileID") %>' 
          Text="I agree" /> 
        </td> 
        <td> 
         <asp:Label ID="lblProfileDesc" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ProfileDesc") %>'></asp:Label> 
        </td> 
       </tr> 
       <br /> 
      </ItemTemplate> 
     </asp:Repeater> 
     <asp:Button ID="btn" runat="server" Text="Click" onclick="btn_Click" /> 
    </div> 
    </form> 

onCheckedChange를 처리하고 있는데 어떤 체크 상자가 클릭되었는지 어떻게 알 수 있습니까? 미리 감사드립니다!

답변

4

당신은

CheckBox checkBox = (CheckBox)sender; 
var id = checkBox.Attributes["data-id"]; 
+0

감사합니다. – Dragan

+0

누가이 답변을 투표 했습니까? 그는 체크 박스의 체크 이벤트에 대해서는 게시하지 않고 버튼을 클릭하면됩니다. 즉, 버튼의 클릭 핸들러에서 보낸 사람은 버튼이 아니라 확인란입니다. –

+0

AutoPostBack이 false로 설정된 경우 @Saeed OnCheckedChanged는 체크 박스가 선택되거나 선택 취소 되어도 다음 포스트 백 (버튼에 의해 트리거되거나 다른 것일 수 있음) 중에 실행되지 않으며 발신자가 여전히 CheckBox가됩니다. –

0

어쩌면 당신은 당신의 UI 아키텍처를 재 설계해야 시도 할 수 있습니다. 제 생각에는 여기 아약스를 사용하실 수 있습니다 :

$(function(){ 
    $('input[type=checkbox]').click(function(){ 
      // Initializing an ajax call here, and updating DOM based on response. 
    }); 
}); 
+0

AutoPostBack 속성은 false로 설정되어 있으므로 button_click 이벤트의 논리를 처리하고 있습니다 :) – Dragan

+0

그래, 네 말이 맞았 어. :). 그러나 좋아하는 것 또는 싫어하는 것, 체크하는 것 또는 체크하지 않는 것 등과 같은 부울 연산에 대한 아약스 호출은 요즘 너무 일반적입니다.) –

+0

요즘에는 탈출 AJAX가 없지만 jQuery atm을 연구하고 있습니다. 내가 끝내면 바로 AJAX로 뛰어 갈거야. 제안 주셔서 감사합니다, 감사! 건배 – Dragan

관련 문제