제목 : Re : gridview 에서 체크박스 사용
글번호:
|
|
581
|
작성자:
|
|
하나
|
작성일:
|
|
2007/05/08 오후 3:47:00
|
조회수:
|
|
5488
|
다른 방법으로 해결했어요 ^^ 근데 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같은 것을 쓰거나요.
즉,해당 그리드뷰를 돌면서 컨트롤을 찾아서 체크해주는게 아니라
자바스크립트로 특정테이블의 혹은 폼의 체크박스를 찾아서 체크/체크해제를
해주는 방식입니다.저는 그렇게 해결했습니다.
검색을 하시면 전체클릭 혹은 해제 자바스크립트 소스가 많이 보일겁니다.
참조하시면 될거에요.
다른 방법이 있는지는 잘 모르겠네요.
|
|
|
|