2012-10-22 2 views
0

내 프로젝트에 체크 박스를 TemplateField로 사용하는 데이터 격자가 있습니다. 하지만 checkbox.checked 속성에 액세스 할 수 없습니다. 누구 아이디어가 있습니까?ASP 용 Datagrid의 체크 박스

내 ASP 코드 : 뒤에

<asp:GridView ID="GVP" runat="server" AutoGenerateColumns="False" DataSourceID="DSP"> 
    <Columns> 
      <asp:TemplateField HeaderStyle-Width="5%" ItemStyle-Width="5%" FooterStyle-Width ="5%"> 
       <ItemTemplate> 
        <asp:CheckBox ID="SelectCb" runat="server"></asp:CheckBox> 
       </ItemTemplate> 
       <FooterStyle Width="5%"/> 
       <HeaderStyle Width="5%"/> 
       <ItemStyle Width="5%"/> 
      </asp:TemplateField> 
      <asp:BoundField DataField="Answers" HeaderText="Options" SortExpression="Answers" /> 
    </Columns> 
</asp:GridView> 

내 VB 코드 :

 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles buttonNext.Click 
    Dim SelectedBox As Boolean = False 
    For Each row As GridViewRow In GVP.Rows 
     Dim cb As CheckBox = row.FindControl("SelectCb") 
     If cb IsNot Nothing AndAlso cb.Checked Then 
      SelectedBox = True 
      Dim RID As Integer = Convert.ToInt32(GVP.DataKeys(row.RowIndex).Value) 
     Else 
      ShowMessage("You did not select anything") 
     End if 
+0

'SelectedBox = ctype (row.FindControl ("SelectCb"), TextBox) .checked'를 시도하십시오. 이것은 효과가있다. – Minus

+0

"checkbox.checked 속성에 액세스 할 수 없습니다"라는 의미는 무엇입니까? 그것은 오류를 던지고 있습니까? 그렇다면 오류는 무엇입니까? – Razvan

+0

디버거가'If cb.Checked Then' 부분에 도착하면; cb가 CType 또는 DirectCast –

답변

0

이 문제는 정말 데이터 소스에 그리드 바인딩 된 Page_Load에 거주; 나는 그것을 삭제하고 문제가 해결되었다.

0

이 시도 :

For Each row As GridViewRow In gvTest.Rows 
    Dim cb As CheckBox = row.FindControl("SelectCb") 
    If (CType(row.FindControl("SelectCb"), CheckBox)).Checked = True Then 
     SelectedBox = True 
     Dim RID As Integer = Convert.ToInt32(gvTest.DataKeys(row.RowIndex).Value) 
    End If  
Next 
+0

으로 선언 된 경우에도 항상 '거짓'을 반환합니다. 작동하지 않습니다. –

0

그것은 당신이 여기서 뭘하려고 어떻게 무엇을 얘기하기 어렵다 당신은 테스트하고 있지만 내 추측에 의하면 행 타입을 검사하지 않기 때문입니다. 따라서 첫 번째 행은 실제로 머리글이므로 체크 박스가 전혀 없을 것입니다 (메시지를 받게됩니다).

For Each row As GridViewRow In GVP.Rows 
    If row.RowType = DataControlRowType.DataRow Then 
     Dim cb As CheckBox ... 
관련 문제