반응형
HOWTO: Visual Studio .NET에서 DataGrid에 CheckBox 웹 컨트롤 사용
이 페이지에서
요약
이 단계별 지침에 따라 DataGrid 컨트롤에 CheckBox 컨트롤을 추가하고 이를 Microsoft SQL Server Pubs 데이터베이...
이 단계별 지침에 따라 DataGrid 컨트롤에 CheckBox 컨트롤을 추가하고 이를 Microsoft SQL Server Pubs 데이터베이스의 Authors 테이블에 바인딩할 수 있습니다.
Visual Studio .NET Web Forms에서는 TemplateColumn 개체를 사용하여 DataGrid에 컨트롤을 추가할 수 있습니다.
이 줄은 CheckBox 컨트롤의 DataBinding 이벤트가 실행될 때 이벤트 처리기 Public Sub BindCheckBox를 호출합니다. BindCheckBox 프로시저는 데이터를 확인하고 현재 확인란의 Checked 속성을 올바르게 설정합니다. DataGrid는 각 행을 바인딩하므로 DataGrid의 모든 행에 대해 이 프로시저가 호출됩니다.
Visual Studio .NET Web Forms에서는 TemplateColumn 개체를 사용하여 DataGrid에 컨트롤을 추가할 수 있습니다.
요구 사항
다음은 권장되는 하드웨어, 소프트웨어 및 네트워크 인프라와 필요한 서비스 팩의 목록입니다.- Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server 또는 Microsoft Windows NT 4.0 Server
- Web Forms의 DataGrid 컨트롤, 데이터 검색 및 데이터 바인딩
- Microsoft Visual Studio .NET
- Microsoft SQL Server
TemplateColumn 개체를 사용하여 DataGrid 웹 컨트롤에 CheckBox를 추가하는 방법
- 새 ASP.NET 웹 응용 프로그램을 만듭니다.
- 서버 탐색기에서 SQL Server의 Pubs 데이터베이스에 대한 연결을 만듭니다. Authors 테이블을 서버 탐색기에서 WebForm1로 끌어 SqlConnection1 및 SqlDataAdapter1 개체를 만듭니다.
- SqlDataAdapter1 개체를 마우스 오른쪽 단추로 누른 다음 데이터 집합 생성을 누릅니다.
- 데이터 집합 선택 영역에서 새로 만들기를 누릅니다. 이름으로 DsAuthors를 입력합니다.
- 데이터 집합에 추가할 테이블 선택 영역에서 Authors 테이블을 선택합니다.
- 이 데이터 집합을 디자이너에 추가합니다. 확인란을 눌러 선택한 다음 확인을 눌러 데이터 집합을 만듭니다.
- 도구 상자의 DataGrid 컨트롤을 WebForm1로 끌고 이 DataGrid의 속성을 다음과 같이 설정합니다.
표 축소
속성 이름 값 DataSource DsAuthors1 DataMember Authors DataKeyField Au_id - Page_Load 이벤트에 다음 코드를 추가하여 데이터 집합을 채우고 이 데이터 집합에 DataGrid를 바인딩합니다.
SqlDataAdapter1.Fill(DsAuthors1) If Not IsPostBack Then DataGrid1.DataBind() End If
- F5 키를 눌러 프로그램을 컴파일하고 실행합니다. DataGrid에 데이터가 표시됩니다.
UI(사용자 인터페이스)와 TemplateColumn 개체를 사용하여 DataGrid 웹 컨트롤에 CheckBox를 추가하는 방법
초기 설정이 완료되면 DataGrid에 CheckBox 컨트롤을 추가하고 이를 데이터 집합에 바인딩하십시오. 이렇게 하려면 다음 단계를 수행하십시오.- 표시할 DataGrid 열을 선택합니다.
- DataGrid를 마우스 오른쪽 단추로 누른 다음 속성 작성기를 누릅니다. 왼쪽 창에서 열을 클릭하여 DataGrid의 열 속성을 표시합니다.
- 런타임에 자동으로 열 만들기 확인란을 눌러 선택을 취소합니다.
- 열 목록 영역의 선택한 열 상자에 au_id 및 au_lname 필드를 추가합니다.
- 선택한 열 상자에 템플릿 열을 추가하고 머리글 텍스트를 Contract로 변경합니다. 확인을 눌러 속성 작성기를 닫습니다.
- 템플릿 열을 편집하고 데이터 집합에 바인딩합니다.
- DataGrid를 마우스 오른쪽 단추로 누른 다음 템플릿 편집, Columns[2] - Contract를 눌러 템플릿 편집기를 엽니다.
템플릿 편집기는 HeaderTemplate, ItemTemplate, EditItemTemplate 및 FooterTemplate 영역으로 구성되어 있습니다. 이 중 ItemTemplate 영역을 사용합니다. - ItemTemplate 속성을 사용하여 TemplateColumn의 데이터 항목 모양을 조정합니다. 이렇게 하려면 열에 항목이 표시되는 방식을 정의하는 템플릿을 만듭니다.
- 도구 상자의 CheckBox 컨트롤을 TemplateColumn의 ItemTemplate 영역으로 끕니다.
- CheckBox 컨트롤을 선택합니다. 속성 창에서 DataBindings 옵션을 찾습니다. 해당 아이콘을 눌러 DataBindings 대화 상자를 엽니다.
- 바인딩 가능한 속성 목록에서 Checked를 선택합니다.
- 단순 바인딩 영역의 Container, DataItem 목록에서 Contract를 선택합니다. 확인을 누릅니다.
CheckBox 컨트롤의 선택 부분은 Contracts 필드에 바인딩되지만 CheckBox 컨트롤의 텍스트 부분은 바인딩되지 않고 공백으로 나타납니다. - 템플릿 편집을 마우스 오른쪽 단추로 누른 다음 템플릿 편집 끝내기를 눌러 TemplateColumn 편집기를 닫고 DataGrid로 돌아갑니다.
- 응용 프로그램을 저장하고 테스트합니다. Contract 열은 확인란으로 표시되고 해당 속성은 SQL Server Pubs 데이터베이스에 있는 Authors 테이블의 데이터를 반영합니다.
- DataGrid를 마우스 오른쪽 단추로 누른 다음 템플릿 편집, Columns[2] - Contract를 눌러 템플릿 편집기를 엽니다.
프로그래밍 방식으로 CheckBox를 추가하는 방법
다음 샘플 코드는 프로그래밍 방식으로 DataGrid에 TemplateColumn 및 CheckBox 컨트롤을 추가하고 데이터를 바인딩합니다. 이 샘플 코드는 먼저 TemplateColumn 컨트롤을 추가한 다음 이 TemplateColumn에 확인란을 추가합니다. 그런 다음 마지막으로 이벤트 처리기를 추가하여 데이터베이스에 CheckBox 컨트롤을 바인딩합니다.- 다음 코드 샘플을 Page_Load 이벤트에 입력하거나 붙여 넣습니다. 이 코드는 TemplateColumn 개체를 만들고 해당 머리글 텍스트를 설정합니다.
SqlDataAdapter1.Fill(DsAuthors1) 'Create a new TemplateColumn object. Dim tcol As New TemplateColumn() With tcol .HeaderText = "CheckBox Column" ' Call DynamicItemTemplate to add the child controls to the Template ' Column and bind them to the Data source. .ItemTemplate = New DynamicItemTemplate() End With DataGrid1.Columns.Add(tcol) If Not IsPostBack Then DataGrid1.DataBind() End If
- Public Class WebForm1, End 클래스 뒤에 다음 코드를 입력하거나 붙여 넣습니다.
Public Class DynamicItemTemplate ' ITemplate - When implemented by a class, defines the Control object ' to which child controls and templates belong. These child controls ' are in turn defined within an inline template. Implements ITemplate Public Overridable Overloads Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn ' InstantiateIn - When implemented by a class, defines the Control ' object to which child controls and templates belong. These child ' controls are, in turn, defined within an inline template. ' ' Create an instance of a CheckBox object. Dim oCheckBox As CheckBox = New CheckBox() ' When the DataBinding event of the CheckBox fires, call the sub ' BindCheckBox to properly bind. ' AddHandler oCheckBox.DataBinding, AddressOf BindCheckBox 'Add the CheckBox to the controls collection. container.Controls.Add(oCheckBox) End Sub Public Sub BindCheckBox(ByVal sender As Object, ByVal e As EventArgs) 'Create a new instance of a CheckBox. Dim oCheckBox As CheckBox = CType(sender, CheckBox) Dim container As DataGridItem = CType(oCheckBox.NamingContainer, DataGridItem) 'Evaluate the data from the Grid item and set the Checked property ' appropriatly If container.DataItem("contract").GetType.ToString = "System.DBNull" Then oCheckBox.Checked = False Else oCheckBox.Checked = CBool(container.DataItem("contract")) End If End Sub End Class
- 코드를 저장하고 실행합니다. TemplateColumn 및 바인딩되지 않은 CheckBox 컨트롤이 추가되었습니다.
컨트롤을 여러 번 반복하여 CheckBox의 값을 테스트하는 방법
앞의 코드 샘플에서 다음 코드 줄의 주석 처리를 제거합니다. 'AddHandler oCheckBox.DataBinding, AddressOf BindCheckBox
참조
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오. 316649 (http://support.microsoft.com/kb...
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
316649 (http://support.microsoft.com/kb/316649/ ) HOWTO: Visual Studio .NET 서버 탐색기 사용
308656 (http://support.microsoft.com/kb/308656/ ) HOWTO: Visual Basic .NET에서 SQL Server .NET 데이터 공급자를 사용하여 SQL Server 데이터베이스 열기
307860 (http://support.microsoft.com/kb/307860/ ) INFO: ASP.NET 데이터 바인딩 개요
308485 (http://support.microsoft.com/kb/308485/ ) HOWTO: Web Form 컨트롤을 사용하여 Master/Detail 페이지 만들기
317878 (http://support.microsoft.com/kb/317878/ ) FIX: DataGrid 웹 서버 컨트롤이 "<" 및 ">" 문자를 올바르게 표시하지 않는다
출처 : http://support.microsoft.com/?scid=kb;ko;306227&spid=6350&sid=global
출처 : http://support.microsoft.com/?scid=kb;ko;306227&spid=6350&sid=global
반응형