2006-08-23

데이터그리드안의 체크박스,텍스트 박스 생성과 이용하기

칼럼 안에 다음 부분을 코딩해보자.



<asp:TemplateColumn ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox Runat="server" ID="CK1"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>



그리고 비하인드 페이지에는 알아서들 데이터를 바인딩 시키기 바란다.
예를 들어 한칼럼을 더추가시켜 그칼럼을 데이터를 바인딩 시키면
알아서 행이 생기겠지..^^



자...어떠한가...훌륭히 바인딩이 되어 나오지 않는가

여기서 당신의 불만이 나올것이다.^^;;;
이제 어떻게 이값을 읽어 드릴것인지...


나는 여기서 이렇게 구현 할려한다. 버튼을 하나 만들어 클릭했을 시

체크박스가 true인것 즉, 체크한 칼럼의 텍스트 박스안의 내용값 즉, value를 가져올 것이다.


자 버튼 클릭 이벤트에 다음 구문을 입력해보자.

for (int i = 0; i < DataGrid1.Items.Count; i++)
{
if (((CheckBox)DataGrid1.Items[i].FindControl("CK1")).Checked == true)
{
Response.Write(((TextBox)DataGrid1.Items[i].FindControl("textbox1")).Text + "</br>/");
}



자세히 뚤어지게 보면 대충코드의 의미가 보이는지?

DataGrid1.Items.Count 말 그대로 데이터그리드의 아이템 수만큼 For문을 돌리겠다는 소리이다.

즉 아이템의 행수만큼 for문은 돌것이다.

IF문을 보면,,체크박스 값을 읽어야 할것이다.

FindControl이란것을 사용하여 데이터그리드에 사용한 asp컨트롤을 찾는 것이다.매우 쉽지 않은가
Text박스도 마찬가지이다.

즉, 본문을 해석해보면 아이템 수만큼, 즉 행수만큼 체크박스가 체크된 행의 텍스트 박스를 익어와라
이말이된다는 소리...

이것만 알면 웬만한 것은 다구현 되겠지??
드롭다운리스트를 테스트로 만들어서 좀더 자기만의 것으로 만드시길...

DATAGrid를 다루기 위한 Tomochan의 멋대로 구조이해하기

간단히 보자면 진짜 간단하다. 단, 데이터 그리드의 기본구조를 이해하여야만 한다.

우리가 asp.net을 하기전에 했던 프로그래밍 생각해보면...떠오르는건 asp일것이다.

asp를 보면 게시판을 만들때 loop문이 생각날것이다..table을 만들고 tr과 td를 돌리던것을..

DataGrid도 마찬가지이다...테이블을 동적으로 생성하는 것이다.

렌더링이 된 데이터 그리드를 보면 알것이다.

어파피 웹이란 HTML과 자바스크립트가 모든것(?) 이라 할 수있다..이것을 간단히 코딩할수 있게 해준것일 뿐이라는 나름대로 짧은 생각을 한다.

데이터그리드를 사용하여 구현하기 위해서 일단.디비에 연결하여 우리의 데이터를 읽어오고

이것을 데이터셋에 넣어서 바인딩 시킨다..

HTML단에는 칼럼태그를 쓰고 그안에 바운드칼럼이나, 사용자정의 칼럼인 템플릿 칼럼을 쓴다.

이 템플릿 칼럼이란게 상당히 매력적인데....기본으로는 텍스트 박스나 체크박스 기능이 없지만.
이칼럼을 씀으로서 우리는 구현을 할 수 있게 한다..

사용법은 딴 사이트에 엄청많으므로 참고 하고...다음 글은...텍스트 박스,체크박스 기능 구현이다.