DataGrid 구성 요소 사용

DataGrid 구성 요소를 사용하면 DataProvider의 배열로 파싱할 수 있는 외부 XML 파일이나 배열에서 데이터를 가져와 행과 열로 이루어진 격자에 표시할 수 있습니다. DataGrid 구성 요소에는 가로/세로 스크롤 기능, 이벤트 지원(편집 가능한 셀 지원 포함), 정렬 기능 등이 있습니다.

격자의 열 테두리, 색상, 글꼴 같은 특징의 크기를 조절하고 사용자 정의할 수 있습니다. 격자의 열에 대해 사용자 정의 무비 클립을 셀 렌더러로 사용할 수 있습니다. 셀 렌더러는 셀의 내용을 표시합니다. 스크롤 막대를 해제하고 DataGrid 메서드를 사용하여 페이지 뷰 스타일 디스플레이를 만들 수도 있습니다. 사용자 정의에 대한 자세한 내용은 Flash Professional용 ActionScript 3.0 참조 설명서 에서 DataGridColumn 클래스를 참조하십시오.

DataGrid 구성 요소와 사용자의 상호 작용

마우스 및 키보드를 사용하여 DataGrid 구성 요소와 상호 작용할 수 있습니다.

sortableColumns 속성과 열의 sortable 속성이 모두 true 로 설정되어 있는 경우 열 머리글을 클릭하면 열 값을 기준으로 데이터가 정렬됩니다. 개별 열의 sortable 속성을 false 로 설정하여 정렬 기능을 해제할 수 있습니다.

resizableColumns 속성이 true 이면 머리글 행에서 열 구분자를 드래그하여 열 크기를 조절할 수 있습니다.

편집할 수 있는 셀을 클릭하면 포커스가 해당 셀로 이동합니다. 편집할 수 없는 셀을 클릭하면 포커스에 아무런 영향을 미치지 않습니다. 개별 셀의 DataGrid.editable DataGridColumn.editable 속성이 모두 true 이면 셀을 편집할 수 있습니다.

자세한 내용은 ActionScript 3.0 참조 설명서 에서 DataGrid 및 DataGridColumn 클래스를 참조하십시오.

DataGrid 인스턴스에 포커스가 있으면 다음 키를 누르거나 클릭하여 인스턴스를 제어할 수 있습니다.

설명

아래쪽 화살표

셀을 편집 중이면 삽입점이 셀의 텍스트 끝으로 이동합니다. 셀을 편집할 수 없는 경우 아래쪽 화살표 키를 누르면 List 구성 요소에서처럼 선택 내용이 처리됩니다.

위쪽 화살표

셀을 편집 중이면 삽입점이 셀의 텍스트 시작 지점으로 이동합니다. 셀을 편집할 수 없는 경우 위쪽 화살표 키를 누르면 List 구성 요소에서처럼 선택 내용이 처리됩니다.

Shift+Up/아래쪽 화살표

DataGrid를 편집할 수 없고 allowMultipleSelection true 이면 연속된 행이 선택됩니다. 반대쪽 화살표로 방향을 바꾸면 시작 행에 도달할 때까지 선택된 행의 선택이 취소되고, 시작 행부터 반대 방향의 행이 선택됩니다.

Shift+클릭

allowMultipleSelection true 이면 선택된 행과 현재 캐럿 위치(강조 표시된 셀) 사이에 있는 모든 행이 선택됩니다.

Ctrl+클릭

allowMultipleSelection true 이면 행이 추가로 선택됩니다. 행이 연속적일 필요는 없습니다.

오른쪽 화살표

셀을 편집 중이면 삽입점이 한 글자 오른쪽으로 이동합니다. 셀을 편집할 수 없는 경우에는 오른쪽 화살표 키를 눌러도 아무런 작업이 수행되지 않습니다.

왼쪽 화살표

셀을 편집 중이면 삽입점이 한 글자 왼쪽으로 이동합니다. 셀을 편집할 수 없는 경우에는 왼쪽 화살표 키를 눌러도 아무런 작업이 수행되지 않습니다.

DataGrid에서 첫 번째 행을 선택합니다.

End

DataGrid에서 마지막 행을 선택합니다.

PageUp

DataGrid의 페이지에서 첫 번째 행을 선택합니다. 페이지는 DataGrid가 스크롤 없이 표시할 수 있는 행 수로 구성됩니다.

PageDown

DataGrid의 페이지에서 마지막 행을 선택합니다. 페이지는 DataGrid가 스크롤 없이 표시할 수 있는 행 수로 구성됩니다.

Return/Enter/Shift+Enter

셀을 편집할 수 있는 경우 변경 내용이 커밋되고 삽입점이 동일한 열의 다음 행(Shift 키를 누른 상태인지에 따라 위쪽 또는 아래쪽 행)에 있는 셀로 이동합니다.

Shift+Tab/Tab

DataGrid가 편집 가능하면 열 끝에 도달할 때까지 포커스를 이전/다음 항목으로 옮기고 열 끝에 도달한 후에는 첫 번째 셀 또는 마지막 셀에 도달할 때까지 이전/다음 행으로 포커스를 옮깁니다. 첫 번째 셀이 선택된 상태에서 Shift+Tab을 누르면 포커스가 이전 컨트롤로 이동합니다. 마지막 셀이 선택된 상태에서 Tab 키를 누르면 포커스가 다음 컨트롤로 이동합니다.

DataGrid를 편집할 수 없으면 포커스가 이전/다음 컨트롤로 이동합니다.

DataGrid 구성 요소를 여러 유형의 데이터 기반 응용 프로그램의 기초로 사용할 수 있습니다. 서식이 지정된 표 형식의 데이터 뷰를 쉽게 표시할 수 있고 셀 렌더러 기능을 사용하여 보다 정교하고 편집 가능한 사용자 인터페이스를 만들 수도 있습니다. 다음은 DataGrid 구성 요소를 실제로 활용한 예입니다.

  • 웹 메일 클라이언트

  • 검색 결과 페이지

  • 대출 계산기 및 세금 양식 응용 프로그램 같은 스프레드시트 응용 프로그램

DataGrid 클래스는 SelectableList 클래스를 확장한 것이므로, DataGrid 구성 요소로 응용 프로그램을 디자인할 때 List 구성 요소의 디자인을 잘 알고 있으면 도움이 됩니다. SelectableList 클래스와 List 구성 요소에 대한 자세한 내용은 ActionScript 3.0 참조 설명서 에서 SelectableList 및 List 클래스를 참조하십시오.

응용 프로그램에 DataGrid 구성 요소를 추가할 때 다음 ActionScript 코드를 추가하여 화면 판독기에서 해당 구성 요소에 액세스할 수 있게 만들 수 있습니다.

import fl.accessibility.DataGridAccImpl; 
DataGridAccImpl.enableAccessibility();

구성 요소의 인스턴스 수에 관계없이 구성 요소의 액세스 가능성을 한 번만 활성화하면 됩니다. 자세한 내용은 Flash 사용 설명서 에서 18장, "액세스 가능한 내용 만들기"를 참조하십시오.

DataGrid 구성 요소 매개 변수

속성 관리자나 구성 요소 관리자에서 각 DataGrid 구성 요소 인스턴스에 대해 allowMultipleSelection , editable , headerHeight , horizontalLineScrollSize , horizontalPageScrollSize , horizontalScrolllPolicy , resizableColumns , rowHeight , showHeaders , verticalLineScrollSize , verticalPageScrollSize , verticalScrollPolicy 등의 제작 매개 변수를 설정할 수 있습니다. 이러한 매개 변수에는 각각 같은 이름의 해당 ActionScript 속성이 있습니다. 이러한 매개 변수의 가능한 값에 대한 자세한 내용은 ActionScript 3.0 Reference for Flash Professional 에서 DataGrid 클래스를 참조하십시오.

DataGrid 구성 요소를 사용하여 응용 프로그램 만들기

DataGrid 구성 요소를 사용하여 응용 프로그램을 만들려면 사용할 데이터의 출처를 먼저 결정해야 합니다. 일반적으로 데이터는 Array에 있으며 dataProvider 속성을 설정하여 이를 격자로 가져올 수 있습니다. 또한 DataGrid 및 DataGridColumn 클래스의 메서드를 사용하여 격자에 데이터를 추가할 수도 있습니다.

DataGrid 구성 요소에서 로컬 데이터 공급자 사용

다음 예제에서는 소프트볼 팀의 선수 명단을 표시하는 DataGrid를 만듭니다. 또한 선수 명단을 Array( aRoster )에 정의하고 이를 DataGrid의 dataProvider 속성에 지정합니다.

  1. Flash에서 [파일] > [새로 만들기]를 선택하고 [Flash 파일(ActionScript 3.0)]을 선택합니다.

  2. [구성 요소] 패널의 DataGrid 구성 요소를 스테이지로 드래그합니다.

  3. 속성 관리자에서 인스턴스 이름으로 aDg 를 입력합니다.

  4. [액션] 패널을 열고 기본 타임라인에서 프레임 1을 선택한 후 다음 ActionScript 코드를 입력합니다.

    import fl.data.DataProvider; 
     
    bldRosterGrid(aDg); 
    var aRoster:Array = new Array(); 
    aRoster = [ 
            {Name:"Wilma Carter", Bats:"R", Throws:"R", Year:"So", Home: "Redlands, CA"},  
            {Name:"Sue Pennypacker", Bats:"L", Throws:"R", Year:"Fr", Home: "Athens, GA"}, 
            {Name:"Jill Smithfield", Bats:"R", Throws:"L", Year:"Sr", Home: "Spokane, WA"}, 
            {Name:"Shirley Goth", Bats:"R", Throws:"R", Year:"Sr", Home: "Carson, NV"}, 
            {Name:"Jennifer Dunbar", Bats:"R", Throws:"R", Year:"Fr", Home: "Seaside, CA"}, 
            {Name:"Patty Crawford", Bats:"L", Throws:"L", Year:"Jr", Home: "Whittier, CA"}, 
            {Name:"Angelina Davis", Bats:"R", Throws:"R", Year:"So", Home: "Odessa, TX"}, 
            {Name:"Maria Santiago", Bats:"L", Throws:"L", Year:"Sr", Home: "Tacoma, WA"}, 
            {Name:"Debbie Ferguson", Bats:"R", Throws:"R", Year: "Jr", Home: "Bend, OR"}, 
            {Name:"Karen Bronson", Bats:"R", Throws:"R", Year: "Sr", Home: "Billings, MO"}, 
            {Name:"Sylvia Munson", Bats:"R", Throws:"R", Year: "Jr", Home: "Pasadena, CA"}, 
            {Name:"Carla Gomez", Bats:"R", Throws:"L", Year: "Sr", Home: "Corona, CA"}, 
            {Name:"Betty Kay", Bats:"R", Throws:"R", Year: "Fr", Home: "Palo Alto, CA"}, 
    ]; 
    aDg.dataProvider = new DataProvider(aRoster); 
    aDg.rowCount = aDg.length; 
     
    function bldRosterGrid(dg:DataGrid){ 
        dg.setSize(400, 300); 
        dg.columns = ["Name", "Bats", "Throws", "Year", "Home"]; 
        dg.columns[0].width = 120; 
        dg.columns[1].width = 50; 
        dg.columns[2].width = 50; 
        dg.columns[3].width = 40; 
        dg.columns[4].width = 120; 
        dg.move(50,50); 
    };

    bldRosterGrid() 함수는 DataGrid 크기를 설정하고 열 순서 및 크기를 설정합니다.

  5. [컨트롤] > [무비 테스트]를 선택합니다.

응용 프로그램에서 DataGrid 구성 요소에 대한 열 지정 및 정렬 추가

열 머리글을 클릭하면 해당 열 값을 기준으로 DataGrid 내용을 내림차순으로 정렬할 수 있습니다.

다음 예제에서는 addColumn() 메서드를 사용하여 DataGrid에 DataGridColumn 인스턴스를 추가합니다. 열에는 선수 이름과 득점이 표시됩니다. 이 예제에서는 sortOptions 속성을 설정하여 각 열의 정렬 옵션도 지정합니다. 즉, Name 열에는 Array.CASEINSENSITIVE 를 지정하고 Score 열에는 Array.NUMERIC 을 지정합니다. 또한 길이를 행 수에 맞게 설정하고 폭을 200으로 설정하여 DataGrid 크기를 조절합니다.

  1. Flash에서 [파일] > [새로 만들기]를 선택하고 [Flash 파일(ActionScript 3.0)]을 선택합니다.

  2. [구성 요소] 패널의 DataGrid 구성 요소를 스테이지로 드래그합니다.

  3. 속성 관리자에서 인스턴스 이름으로 aDg 를 입력합니다.

  4. [액션] 패널을 열고 기본 타임라인에서 프레임 1을 선택한 후 다음 ActionScript 코드를 입력합니다.

    import fl.controls.dataGridClasses.DataGridColumn; 
    import fl.events.DataGridEvent; 
    import fl.data.DataProvider; 
    // Create columns to enable sorting of data. 
    var nameDGC:DataGridColumn = new DataGridColumn("name"); 
    nameDGC.sortOptions = Array.CASEINSENSITIVE; 
    var scoreDGC:DataGridColumn = new DataGridColumn("score"); 
    scoreDGC.sortOptions = Array.NUMERIC; 
    aDg.addColumn(nameDGC); 
    aDg.addColumn(scoreDGC); 
    var aDP_array:Array = new Array({name:"clark", score:3135}, {name:"Bruce", score:403}, {name:"Peter", score:25}) 
    aDg.dataProvider = new DataProvider(aDP_array); 
    aDg.rowCount = aDg.length; 
    aDg.width = 200;
  5. [컨트롤] > [무비 테스트]를 선택합니다.

ActionScript를 사용하여 DataGrid 구성 요소 인스턴스 만들기

다음 예제에서는 ActionScript를 사용하여 DataGrid를 만들고 이를 선수 이름과 득점 Array로 채웁니다.

  1. 새 Flash(ActionScript 3.0) 문서를 만듭니다.

  2. [구성 요소] 패널의 DataGrid 구성 요소를 현재 문서의 [라이브러리] 패널로 드래그합니다.

    구성 요소가 라이브러리에 추가되고 응용 프로그램에는 표시되지 않습니다.

  3. [액션] 패널을 열고 기본 타임라인에서 프레임 1을 선택한 후 다음 ActionScript 코드를 입력합니다.

    import fl.controls.DataGrid; 
    import fl.data.DataProvider; 
     
    var aDg:DataGrid = new DataGrid(); 
    addChild(aDg); 
    aDg.columns = [ "Name", "Score" ]; 
    aDg.setSize(140, 100); 
    aDg.move(10, 40);

    이 코드에서는 DataGrid 인스턴스를 만든 후 격자 크기를 조절하고 격자를 배치합니다.

  4. 배열을 만들어 데이터를 추가하고 DataGrid에 대한 데이터 공급자로 식별합니다.

    var aDP_array:Array = new Array(); 
    aDP_array.push({Name:"Clark", Score:3135}); 
    aDP_array.push({Name:"Bruce", Score:403}); 
    aDP_array.push({Name:"Peter", Score:25}); 
    aDg.dataProvider = new DataProvider(aDP_array); 
    aDg.rowCount = aDg.length;
  5. [컨트롤] > [무비 테스트]를 선택합니다.

XML 파일로 DataGrid 로드

다음 예제에서는 DataGridColumn 클래스를 사용하여 DataGrid 열을 만듭니다. 그런 다음 XML 객체를 DataProvider() 생성자의 value 매개 변수로 전달하여 DataGrid를 채웁니다.

  1. 텍스트 편집기를 사용하여 다음 데이터가 포함된 XML 파일을 만든 후 FLA 파일을 저장하는 폴더와 동일한 폴더에 team.xml 로 저장합니다.

    <team> 
        <player name="Player A" avg="0.293" /> 
        <player name="Player B" avg="0.214" /> 
        <player name="Player C" avg="0.317" /> 
    </team>
  2. 새 Flash(ActionScript 3.0) 문서를 만듭니다.

  3. [구성 요소] 패널의 DataGrid 구성 요소를 두 번 클릭하여 스테이지에 추가합니다.

  4. 속성 관리자에서 인스턴스 이름으로 aDg 를 입력합니다.

  5. [액션] 패널을 열고 기본 타임라인에서 프레임 1을 선택한 후 다음 ActionScript 코드를 입력합니다.

    import fl.controls.dataGridClasses.DataGridColumn; 
    import fl.data.DataProvider; 
    import flash.net.*; 
    import flash.events.*; 
     
    var request:URLRequest = new URLRequest("team.xml"); 
    var loader:URLLoader = new URLLoader; 
     
     
    loader.load(request); 
    loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); 
     
    function loaderCompleteHandler(event:Event):void { 
     
        var teamXML:XML = new XML(loader.data); 
     
        var nameCol:DataGridColumn = new DataGridColumn("name"); 
        nameCol.headerText = "Name"; 
        nameCol.width = 120; 
        var avgCol:DataGridColumn = new DataGridColumn("avg"); 
        avgCol.headerText = "Average"; 
        avgCol.width = 60; 
         
        var myDP:DataProvider = new DataProvider(teamXML); 
         
        aDg.columns = [nameCol, avgCol]; 
        aDg.width = 200; 
        aDg.dataProvider = myDP; 
        aDg.rowCount = aDg.length; 
    }
  6. [컨트롤] > [무비 테스트]를 선택합니다.