Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : gridview 에서 체크박스 사용
글번호: 581
작성자: 하나
작성일: 2007/05/08 오후 3:47:00
조회수: 5251

다른 방법으로 해결했어요 ^^ 근데 datarowbinding 에서도 가능할거같은데 안돼요,
  <asp:TemplateField HeaderText="Select">
    <HeaderTemplate>
            <asp:CheckBox ID="chkAll"  Text = "전부선택" ToolTip="전부선택/취소"
              runat="server"  AutoPostBack="true" OnCheckedChanged="chkAll_CheckedChanged"/>
    </HeaderTemplate>
    <ItemTemplate>
             <asp:CheckBox ID="CBSelect"  TextAlign ="left" runat="server" />
    </ItemTemplate>
   </asp:TemplateField>      
    Protected Sub chkAll_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim ChkAll As CheckBox = (CType(GV_authGrp.HeaderRow.FindControl("ChkAll"), CheckBox))
        Dim i As Integer
        For i = 0 To GV_authGrp.Rows.Count - 1
            Dim CBSelect As CheckBox = (CType(GV_authGrp.Rows(i).FindControl("CBSelect"), CheckBox))
            If ChkAll.Checked = True Then
                CBSelect.Checked = True
            Else
                CBSelect.Checked = False
            End If
        Next

    End Sub

On 2007-05-08 오후 3:13:00, '하나' wrote:
------------------------------------------------------------
>  <asp:TemplateField HeaderText="Select">
>    <HeaderTemplate>
>            <asp:CheckBox ID="chkAll"  Text = "전부선택" ToolTip="전부선택/취소"
>              runat="server" />
>    </HeaderTemplate>
>    <ItemTemplate>
>             <asp:CheckBox ID="CBSelect"  TextAlign ="left" runat="server" />
>    </ItemTemplate>
>   </asp:TemplateField>            
>전부선택 을 클릭하면 그리드뷰의 체크박스를 전체 체크하고싶은데요
>       Protected Sub GV_authGrp_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GV_authGrp.RowDataBound
>
>        If (e.Row.RowType = DataControlRowType.Header And e.Row.RowType = DataControlRowType.DataRow) Then
>            Dim ChkAll As CheckBox = (CType(GV_authGrp.Rows(0).FindControl("ChkAll"), CheckBox))
>            Dim i As Integer
>            For i = 0 To GV_authGrp.Rows.Count - 1
>                Dim CBSelect As CheckBox = (CType(GV_authGrp.Rows(i).FindControl("CBSelect"), CheckBox))
>                If ChkAll.Checked = True Then
>                    CBSelect.Checked = True
>                Else
>                    CBSelect.Checked = False
>                End If
>            Next
>        End If
>
>    End Sub
>
>이렇게 했는데 안되네요,클릭해도 여기에 들어오지 않아요,닷넷 초보자의 서러움 ㅠㅠ
>도와주세요~
------------------------------------------------------------

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  hatukoi
  2007-05-08 오후 3:50:47
RowDataBound라는 이벤트가 DataBound이벤트니까 결국 데이터가 바인딩되는 시점에서 이루어지는 이벤트 일거라 생각되네요.
즉 체크박스를 클릭함으로 해서 데이터바인딩이 새로 이루어 져야 해당 프로세스를 거칠 것 같습니다.
  yimeng
  2007-05-08 오후 3:53:53
바인딩에 관해서 궁금한게있어요
매번마다 TemplateField 에 들어가요,그래서 체크박스 클릭할때마다 그리드뷰에 탬플릿필드안에 컴포넌트들이 깜박여요~
해결할방법은 없을가요??
  hatukoi
  2007-05-08 오후 4:05:31
제가 볼땐 체크박스로 인해서 일어나는건 이벤트 이지 바인딩은 아닙니다.
데이터가 새로 들어와서 보여주는 건 아니니까요.
gridview.DataBind() 가 일어나야 바인딩이벤트가 발생합니다.

그리고,깜박 거린다는 것은 결국 포스트백이 일어난다는 것이죠.
그게 싫으시면 제가 아는 한에서는 클라이언트 스크립트로 해결해야 합니다.
AJAX같은 것을 쓰거나요.
즉,해당 그리드뷰를 돌면서 컨트롤을 찾아서 체크해주는게 아니라
자바스크립트로 특정테이블의 혹은 폼의 체크박스를 찾아서 체크/체크해제를
해주는 방식입니다.저는 그렇게 해결했습니다.
검색을 하시면 전체클릭 혹은 해제 자바스크립트 소스가 많이 보일겁니다.
참조하시면 될거에요.
다른 방법이 있는지는 잘 모르겠네요.

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 gridview 내용을 엑셀에 보내는데요,애러가 떠요 - 하나 2007-05-08 3335
  gridview 에서 체크박스 사용 (2) - 하나 2007-05-08 4310
현재글 Re : gridview 에서 체크박스 사용(3) - 하나 2007-05-08 5251
  Re : gridview 에서 체크박스 사용 - 김동규 2007-05-08 3228
다음글 ASP.NET 개발시, 환경 구성의 궁합은? - 이인호 2007-05-08 3587
 
손님 사용자 Anonymous (손님)
로그인 Home