2011-08-17 4 views
0

ItemTemplate 안에 체크 박스가있는 ASP.NET GridView가 있습니다. 나는 (jQuery로) 그 중 어떤 것이 다른 것을 성취하도록 선택되었는지 여부를 확인하기 만하면된다. 아래 코드를 사용하면 아무 일도 일어나지 않습니다. CheckBox에 ID를 부여하면 첫 번째 확인란 만 작동합니다. (자세한 설명을 위해 편집)GridView 내 Checkbox ItemTemplate with jQuery

<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false" SkinID="GridView" 
      DataKeyNames="Check Config"> 
      <Columns> 
       <asp:BoundField HeaderText="Schedule ID" DataField="Check Config"></asp:BoundField> 
       <asp:BoundField HeaderText="Check Configuration" DataField="Check Configuration" /> 
       <asp:BoundField HeaderText="Shift" DataField="Shift" /> 
       <asp:BoundField HeaderText="Earliest Time" DataField="Earliest Time" /> 
       <asp:BoundField HeaderText="Alarm Time" DataField="Alarm Date" /> 
       <asp:BoundField HeaderText="Disposition" DataField="Disposition" /> 
       <asp:TemplateField HeaderText="Disable"> 
        <ItemTemplate> 
         <asp:CheckBox runat="server" CssClass="alarmSelections" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

그리고 여기에 jQuery를 다음과 같습니다 : 여기

은의 GridView입니다

//if some or all rows are selected, create the html button "btnEnterComment" 
      $('[id$="gvData"]').change(function() { 
       //check to see if the button already exists 
       if ($('#divButtonHolder').hasClass('classFlag')) { 
        return; 
       } 
       else { 
        if ($('.alarmSelections:checked').length) { 
         $('#divButtonHolder').html('<input type="button" id="btnEnterComment" value="Disable Marked Alarms" style="border: 2px solid green; background-color: #fff;height: 25px; cursor: hand;"></input>'); 
         $('#divButtonHolder').addClass('classFlag'); 
        } 


       } 
+0

어디서'divButtonHolder'입니까? – naveen

답변

2

시도 :

// evaluates to true if one or more 
// 'alarmSelections' checkboxes have been checked 
if($('.alarmSelections:checked').length) { 
    ... 
+0

제안을 구현 한 후 위 코드를 추가/편집했습니다 (위 참조). 그것은 여전히 ​​작동하지 않으며 내가 다른 곳에서 엉망이되었는지 궁금해합니다? "gvData"는 GridView ID입니다. – Matt

0

alarmSelections가의 배열을 반환합니다 확인란.

.each (function() {코드})를 사용하고 루프가 있으면 확인 된 항목이 있는지 확인해야합니다.

+0

karim의 게시물도 작동합니다 ... –

1

구문

데이터 격자 IDS가 동적으로 생성되는 모든 제어를 렌더링
$("[ID*=chkABC]").each(function(){ 
//use this. any property to play with each checkbox 
}) 

이하 이용한 ID chkABC

모든 액세스하여 체크 박스를 체크 박스를 제공한다. [ID * = chkABC] 구문은 chkABC 이름으로 끝나는 모든 컨트롤을 선택합니다.

이 구문을 알고 있으면 jquery를 리피터/데이터 그리드 종류의 컨트롤과 함께 사용하는 것이 중요합니다. 나는이 해결책을 찾기 위해 더 일찍 많은 어려움을 겪었다. 더 이상 투쟁하지 않기를 바랍니다.

+0

설명을 위해 전체 jQuery 함수를 추가했습니다. 나는 네가하는 말을보고 나는이 어딘가에 지금까지 어수선해하고 있다고 생각하고있다. – Matt

0
$('[id$="gvData"]') 

나는 뇌 구문 분석 올바르게, 다음과 같습니다 속성으로 렌더링 된 요소에 대한 찾고 있어요 경우 : 나는 "ID $"표기법에 익숙하지 않다

<sometag id$="gvData"> 

선택자에서 사용하고 있습니다 - "$"는 와일드 카드 또는 다른 특수 문자입니까?

또한 GridView가 실제로 "gvData"라는 ID로 렌더링되지 않을 것이라고 생각합니다. ASP.NET은 페이지의 고유성을 보장하기 위해 아마 "ct100_gvData"또는 이와 유사한 것으로 렌더링합니다. 나는 JQuery와의 ASP 생성 된 컨트롤을 참조 할 필요가 일반적으로

는, 내 코드는 다음과 같은 :은 "ct100_gvData"값, 또는 무엇이든 munged 모임 ID로 해결해야

$('#<%= gvData.ClientID %>') 

ASP.NET은 렌더링 될 때 컨트롤을 할당합니다.