2012-09-24 2 views
0

Visual Studio 2010에서 C#을 사용하고 있습니다. 나는이 같은 자바 스크립트를 만든체크 박스 유형 변환

<asp:TemplateField ItemStyle-HorizontalAlign="left" HeaderStyle-HorizontalAlign="Left" HeaderText="Beetald"> 
    <HeaderTemplate> 
     <input type="checkbox" id="selectallTeachers" class="selectallTeachers" onclick="javasctipt:SelectheaderCheckboxesTeacher();" /> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <input type="checkbox" id="chkPaid" class="caseTeacher" name="caseTeacher" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

:

나는 문제가, 내 ASCX 페이지 중 하나에 나는이 같은 체크 박스 열을 만든

<script type="text/javascript"> 
    // Select/Deselect checkboxes based on header checkbox 
    function SelectheaderCheckboxesTeacher() { 
     if ($("#selectallTeachers").val() == 'on') { 
      $('.caseTeacher').attr('checked', 'checked'); 
      $("#selectallTeachers").val('off'); 
     } 
     else if ($("#selectallTeachers").val() == 'off') { 
      $('.caseTeacher').removeAttr("checked"); 
      $("#selectallTeachers").val('on'); 
     } 

     $(".caseTeacher").click(function() { 
      if ($(".caseTeacher").length == $(".caseTeacher:checked").length) { 
       $("#selectallTeachers").attr("checked", "checked"); 
       $("#selectallTeachers").val('off'); 
      } else { 
       $("#selectallTeachers").removeAttr("checked"); 
       $("#selectallTeachers").val('on'); 
      } 
     }); 
    } 
    // if all checkbox are selected, check the selectallTeachers checkbox 
    // and viceversa 
</script> 

buttonclick 이벤트의 I 이 작성 :

protected void btnDeleteSelectedMessages_Click(object sender, EventArgs e) 
{ 
    if (currentGridView == null) 
     setCurrentGridView(); 

    //controleer voor elke rij welke checkbox is geselecteerd 
    foreach (GridViewRow row in currentGridView.Rows) 
    { 
     CheckBox cb = (CheckBox)row.FindControl("chkPaid"); 
     Guid messageID = (Guid)currentGridView.DataKeys[row.DataItemIndex].Value; 

     //als de checkbox is geselecteerd het bericht verwijderen 
     if (cb != null && cb.Checked) 
     { 
      if (currentGridView.ID.Equals("Messages")) 
       b.BussinesMessageReceiver.DeleteMessageReceiver(messageID, MessageBoxPerson); 
      else if (currentGridView.ID.Equals("MessagesSent")) 
       b.BussinesMessage.DeleteMessageSender(messageID); 
      else //MessagesDeleted 
       b.BussinesMessage.DeleteMessage(messageID, (Page.Server.MapPath("~/Upload/") + messageID)); 
      continue; 
     } 
    } 
    btnDeleteSelectedMessages.Enabled = false; 
    selectLocation.Visible = false; 
    clearSelectedMessageSession(); 

    //Update the GridView 
    BindGridView(); 
} 

그것은 라인에 오류가 표시

CheckBox cb = (CheckBox)row.FindControl("chkPaid"); 

입력란에 직접 입력하지 않고 확인란을 만들었 기 때문에 입력했습니다.

+0

왜 입력 대신 확인란을 사용할 수 없습니까? –

+0

표시 할 오류 유형을 지정하는 것이 좋습니다. –

+0

'row.FindControl ("chkBoxDelete");가 실제로 리턴하는 타입은 무엇입니까? – ChrisF

답변

1

input type="checkbox"CheckBox이 아닙니다. 따라서 HtmlInputCheckBox (또는 CheckBox)으로 변환해야합니다.

var cb = (HtmlInputCheckBox)row.FindControl("chkPaid"); 
+0

또한 (HtmlInputCheckBox) 아래에 빨간색 선이 표시됩니다. –

+1

그런 다음'using System.Web.UI.HtmlControls'을 추가하십시오. 나는 내가 링크를 제공 한 이후로 내가 의미했던 컨트롤이 분명 할 것이라고 생각했다. –

+0

여전히 동일한 문제가 있습니다 'System.Web.UI.WebControls.CheckBox'형식의 개체를 캐스팅 할 수 없어 'System.Web.UI.HtmlControls.HtmlInputCheckBox'를 입력하십시오. 나는 cade를 ..로 변경했다. var cb = (System.Web.UI.HtmlControls.HtmlInputCheckBox) row.FindControl ("chkBoxDelete"); –

관련 문제