C 언어 개열/Windows CE 개발

DataGrid 컨트롤

본클라쓰 2011. 12. 2. 10:26

.NEt Compact framework의 DataGrid 클래스는 전체 .NET Framework에 포함된 Windows Forms DataGrid 클래스의 핵심 기능을 제공한다.

 

DataSource 속성을 DataSet으로 설정할 수 있다. 보다 나은 성능을 얻으려면 DataSet의 특정 DataTable에 바인딩해야 된다.

 

.NET Compack Framework에서는 런타임에 DataGrid의 내용을 직접 편집할 수 없다. TextBox와 같은 컨트롤을 데이터 소스에 바인딩한 후 DataGrid를 사용하여 레코드를 표시 및 선택해야 한다.

 

DataGrid 클래스는 스크롤 가능한 표에 ADO.NET 데이터를 표시한다. DataGridView 컨트롤은 DataGrid 컨트롤에 기능을 대체하고 추가한다. 그러나 DataGrid 컨트롤은 사용자가 선택하는 경우 이전 버전과 호환성과 이후 사용을 위해 유지된다.

 

선택된 셀을 확인하려면 CurrentCell 속성을 사용한다. 셀의 행 및 열 인덱스 또는 단일 DataGridCell을 취할 수 있는 Item 속성을 사용하여 셀의 값을 변경한다. CurrentCellChanged 이벤트를 모니터링하여 사용자가 언제 다른 셀을 선택하는지를 감지한다.

 

사용자가 컨트롤의 어떤 부분을 클릭했는지 확인하려면 MosueDown 이벤트의 HitTest 메서드를 사용한다. HitTest 메서드는 클릭한 영역의 행 및 열을 포함하는 DataGrid.HitTestInfo 개체를 반환한다.

 

런타임에 컨트롤 모양을 관리하려는 경우 색 및 캡션 특성을 설정하는데 CaptionForeColor, CaptionBackColor, CaptionFont 등과 같은 속성을 사용할 수 있다.

 

DataGridTableStyle 개체를 만든 다음 TableStyles 속성을 통해 액세스할 수 있는 GridTableStylesCollection에 이 개체들을 추가하는 방법으로도 표시된 표의 모양을 수정할 수 있다. 예를 들어, DataSource가 세 개의 DataTable 개체를 포함하는 DataSet으로 설정된 경우 각 테이블에 하나씩 세 개의 DataGridTableStyle 개체로 컬렉션에 추가할 수 있다. 각 DataGridTableStyle 개체를 DataTable과 동기화하려면 DataGridTableStyle의 MappingName을 DataTable의 TableName으로 설정한다.

 

사용자 지정된 테이블 뷰를 만들려면 DataGridTextBoxColumn 또는 DataGridBoolColumn 클래스의 인스턴스를 만들고 TableStyles 속성을 통해 액세스되는 GridTableStylesCollection에 해당 개체를 추가한다. 두 클래스는 모두 DataGridColumnStyle에서 상속을 한다. 각 열 스트아리에 대해 MappingName을 표에 표시하려는 열의 ColumnName으로 설정한다. 열을 숨기려면 해당 MappingName을 유효한 ColumnName이 아닌 다른 것을 설정한다.

 

열 텍스트의 형식을 지정하려면 DataGridTextBoxColumn의 Format 속성을 날짜 및 시간 형식 문자열 또는 표준 숫자 형식 문자열에서 찾은 값 중 하나로 설정한다.

 

DataGrid를 강력한 형식의 개체 배열에 바인딩하려면 개체 형식에 공용 속성이 포함되어 있어야 한다. 배열을 표시하는 DataGridTableStyle을 만들려먼 DataGridTableStyle.MappingName 속성을 typename[]으로 설정한다. 여기서 typename은 개체 형식의 이름으로 대체된다. MappingName 속성은 대/소문자를 구분하므로 형식 이름이 정확히 일치되어야 한다.

 

또한 DataGrid를 ArrayList에 바인딩할 수 있다. ArrayList는 여러 형식의 개체를 포함할 수 있지만 목록에 있는 전체 항목의 형식이 첫 번재 항목의 형식과 같아야 DataGrid가 목록에 바인딩될 수 있다. 이렇게 되면 모든 개체가 같은 형식이 되거나 목록의 첫 번재 항목과 같은 클래스에서 상속해야 한다. 예를 들어, 목록의 첫 번째 항목이 Control인 경우 두 번째 항목은 Control을 상속하는 TextBox가 될 수 있다. 이와 반대로 첫 번재 항목이 TextBox인 경우 두 번째 개체는 Control이 될 수 없다. 뿐만 아니라 ArrayList는 바인딩되는 경우 내부 항목이 있어야 한다. 빈 ArrayList는 빈 표가 된다.

 

DataGrid.HitTestInfo를 System.Windows.Forms.DataGrid 컨트롤의 HitTest 메서드와 함께 사용하면 사용자가 System.Windows.Foms.DataGrid 컨트롤의 어느 부분을 클릭했는지 확인할 수 있다. DataGridHitTestInfo에는 클릭한 표의 행, 열 및 부분이 포함되어 있다.

 

HitTest메서드는 System.Windows.Forms.DataGrid 컨트롤의 DragDrop, DragEnter, DragOver, MouseDown, MouseMove, MouseUp 및 MouseWheel 이벤트에서 제공하는 x 및 y 인수를 사용ㅎ나다.

 

 

Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)

 

    Dim myGrid As DataGrid = CType(sender, DataGrid)

    Dim hti As System.Windows.Forms.DataGrid.HitTestInfo

    hit = myGrid.HitTest(e.X, e.Y)

 

    Select Case hit.Type

        Case System.Windows.Forms.DataGrid.HitTestType.None

            Console.WriteLine("You clicked the background")

        Case System.Windows.Forms.DataGrid.HitTestType.Cell

            Console.WriteLine("You clicked cell at row " & hti.Row & ", col " & hit.Column)

        Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader

            Console.WriteLine("You clicked the column header for column " & hti.Column)

        Case System.Windows.Forms.DataGrid.HitTestType.RowHeader

            Console.WriteLine("You clicked the row header for row " & hti.Row)

        Case System.Windows.Forms.DataGrid.HitTestType.RowResize

            Console.WriteLine("You clicked the row resizer for row " & hti.Row)

        Case System.Windows.Forms.DataGrid.HitTestType.Caption

            Console.WriteLine("You clicked the caption")

        Case System.Windows.Forms.DataGrid.HItTestType.ParentRows

            Console.WriteLine("You clicked the parent row")

    End Select 

 

End Sub

 

 

 

DataGrid 컨트롤을 사용하면 SQL 데이터베이스, LINQ 쿼리 및 다른 바인딩 가능한 데이터 소스와 같은 여러 종류의 소스에서 가져온 데이터를 표시하고 편집할 수 있습니다.

 

DataGridTemplateColumn을 사용하여 템플릿에 정의된 데이터를 표시할 수 있습니다. 다음 표에서는 기본적으로 제공되는 열 형식으로 보여 줍니다.

 

DataGridTextColumn(String), DataGridCheckBoxColumn(Boolean), DataGridComboBoxColumn(Enum), DataGridHyperlinkColumn(uri)

 

셀 글꼴, 색, 크기 등의 모양에서 DataGrid를 사용자 지정할 수 있습니다.

 

 

교대로 반복되는 배경색

AlternationIndex 속성을 2이상으로 설정한 다음 Brush를 RowBackGround 및 AlternatingRowBackground 속성에 할당합니다.

 

 

 

DataGrid1.ItemSource = query.ToList()