다음을 통해 공유


ListObject 컨트롤

ListObject 컨트롤은 이벤트를 노출하는 목록이며 데이터에 바인딩할 수 있습니다. 워크시트에 목록을 추가하면 Visual Studio에서 Microsoft Office Excel 개체 모델을 순회하지 않고도 직접 프로그래밍할 수 있는 ListObject 컨트롤이 작성됩니다.

적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

컨트롤 만들기

문서 수준 프로젝트에서는 디자인 타임이나 런타임에 워크시트에 ListObject 컨트롤을 추가할 수 있습니다. 응용 프로그램 수준 프로젝트에서는 런타임에만 워크시트에 ListObject 컨트롤을 추가할 수 있습니다. 자세한 내용은 방법: 워크시트에 ListObject 컨트롤 추가를 참조하십시오.

참고

기본적으로 동적으로 만들어진 목록 개체는 워크시트를 닫을 때 워크시트에서 호스트 컨트롤로 유지되지 않습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하십시오.

컨트롤에 데이터 바인딩

ListObject 컨트롤은 단순 데이터 바인딩과 복합 데이터 바인딩을 모두 지원합니다. ListObject 컨트롤은 디자인 타임에 DataSourceDataMember 속성을 사용하거나 런타임에 SetDataBinding 메서드를 사용하여 데이터 소스에 바인딩할 수 있습니다.

참고

ListObjectDataTable과 같이 데이터가 변경되면 이벤트를 발생시키는 데이터 소스에 바인딩될 때 자동으로 업데이트됩니다. 데이터가 변경되어도 이벤트를 발생시키지 않는 데이터 소스에 ListObject를 바인딩할 경우 RefreshDataRow 또는 RefreshDataRows 메서드를 호출하여 ListObject를 업데이트해야 합니다.

반복 스키마 요소를 워크시트 셀에 매핑하여 ListObject를 워크시트 셀에 추가하는 경우 Visual Studio는 ListObject를 생성된 데이터 집합에 자동으로 매핑합니다. 이때 ListObject가 데이터에 자동으로 바인딩되지 않습니다. 디자인 타임이나 런타임에 문서 수준 프로젝트에서 데이터 집합에 ListObject를 바인딩하는 단계를 수행할 수 있습니다. 런타임에 응용 프로그램 수준 추가 기능에서도 데이터 집합에 ListObject를 프로그래밍 방식으로 바인딩할 수 있습니다.

데이터는 ListObject와 구분되어 있으므로 ListObject를 통해 직접 데이터를 추가하거나 제거하는 대신 바인딩된 데이터 집합을 사용해야 합니다. 바인딩된 데이터 집합의 데이터가 어떤 메커니즘을 통해 업데이트되면 ListObject 컨트롤이 변경 내용을 자동으로 반영합니다. 자세한 내용은 Office 솔루션의 컨트롤에 데이터 바인딩을 참조하십시오.

ListObject를 데이터 소스에 바인딩하여 ListObject 컨트롤을 빠르게 채울 수 있습니다. 데이터 바인딩된 ListObject에서 데이터를 편집하는 경우 데이터 소스의 데이터도 자동으로 변경됩니다. ListObject를 채운 다음 사용자가 데이터 소스를 수정하지 않고 ListObject에서 데이터를 변경할 수 있도록 하려면 Disconnect 메서드를 사용하여 ListObject를 데이터 소스에서 분리합니다. 자세한 내용은 방법: ListObject 컨트롤을 데이터로 채우기를 참조하십시오.

참고

겹치는 ListObject 컨트롤에 대해서는 데이터 바인딩이 지원되지 않습니다.

ListObject 컨트롤의 성능 향상

데이터 바인딩된 ListObject 컨트롤로 XML 파일을 읽어들이는 경우, 먼저 컨트롤을 바인딩한 다음 ReadXml을 호출하여 데이터 집합을 채우면 작업이 느려지기 쉽습니다. 성능을 높이려면 컨트롤을 바인딩하기 전에 ReadXml을 호출하십시오.

ListObject 컨트롤과 데이터 소스 간의 연결 끊기

ListObject 컨트롤을 데이터 소스에 바인딩하여 데이터로 해당 컨트롤을 채운 후 목록 개체의 데이터에 대한 수정이 데이터 소스에 영향을 주지 않도록 연결을 끊을 수 있습니다. 자세한 내용은 방법: ListObject 컨트롤을 데이터로 채우기를 참조하십시오.

열 및 행 순서 복원

디자인 타임에 문서에 추가된 ListObject 컨트롤에 데이터를 바인딩하는 경우 Visual Studio에서 통합 문서가 저장될 때마다 열 및 행 순서를 추적합니다. 사용자가 런타임 동안 ListObject의 열이나 행을 이동한 경우 다음에 통합 문서를 열면 그러한 변경된 순서가 유지되고 ListObject 컨트롤은 데이터 소스에 다시 바인딩됩니다.

ListObject를 원래의 열 및 행 순서로 복원하려면 ResetPersistedBindingInformation 메서드를 호출합니다. 이 메서드에서는 지정된 ListObject의 열 및 행 순서와 관련된 사용자 지정 문서 속성을 제거합니다. ListObject의 열 및 행 순서를 유지하지 않으려면 통합 문서의 Shutdown 이벤트에서 이 메서드를 호출합니다.

서식 지정

Microsoft.Office.Interop.Excel.ListObject에 적용할 수 있는 서식은 Microsoft.Office.Tools.Excel.ListObject 컨트롤에도 적용할 수 있습니다. 여기에는 테두리, 글꼴, 숫자 형식 및 스타일이 포함됩니다. 최종 사용자는 데이터 바인딩된 ListObject에서 열을 다시 정렬할 수 있습니다. 디자인 타임에 ListObject를 문서에 추가하면 이러한 변경 내용을 문서와 함께 유지할 수 있습니다. 이후에 문서를 열면 목록 개체가 동일한 데이터 소스에 바인딩되지만 열 순서에는 사용자의 변경 내용이 반영됩니다.

런타임에 열 추가 및 제거

데이터 바인딩된 ListObject 컨트롤의 열은 런타임에 수동으로 추가하거나 제거할 수 없습니다. 최종 사용자가 열을 삭제하려 시도하면 삭제한 열이 즉시 복구되고, 최종 사용자가 추가한 열은 모두 제거됩니다. 따라서 데이터에 바인딩된 ListObject에 대해 이러한 작업을 수행할 수 없는 이유를 사용자에게 설명하는 코드를 작성하는 것이 중요합니다. Visual Studio에서는 데이터 바인딩에 관련된 ListObject의 여러 가지 이벤트를 제공합니다. 예를 들어, OriginalDataRestored 이벤트를 사용하면 사용자가 삭제하려 시도한 데이터를 삭제할 수 없고 이 데이터가 복구되었음을 알리는 경고 메시지를 표시할 수 있습니다.

런타임에 행 추가 및 제거

데이터 소스에서 새 행을 추가할 수 있도록 허용하고 있으며 데이터 소스가 읽기 전용이 아닌 경우 데이터 바인딩된 ListObject 컨트롤에서 행을 수동으로 추가하거나 제거할 수 있습니다. BeforeAddDataBoundRow 같은 이벤트에 대한 코드를 작성하여 데이터의 유효성을 검사할 수 있습니다. 자세한 내용은 방법: ListObject 컨트롤에 새 행을 추가할 때 데이터 유효성 검사를 참조하십시오.

일부 경우에는 목록 개체와 데이터 소스의 관계로 인해 루틴 오류가 발생할 수 있습니다. 예를 들어 ListObject에 표시하려는 열을 매핑할 수 있으므로, null 값을 사용할 수 없는 필드 같이 제한 사항이 있는 열을 지정하지 않으면 행을 만들 때마다 오류가 발생합니다. ErrorAddDataBoundRow 이벤트의 이벤트 처리기에서 누락 값을 추가하는 코드를 작성할 수 있습니다.

Excel에서 ListObject 컨트롤 이름 바꾸기

런타임에 Excel의 디자인 탭을 사용하여 Excel 표의 이름을 바꿀 수 있지만 ListObject 컨트롤은 이러한 기능을 지원하지 않습니다. 사용자가 ListObject에 해당하는 Excel 표의 이름을 바꾸려고 하면 통합 문서를 저장할 때 Excel 표의 이름이 자동으로 원래 이름으로 복원됩니다.

이벤트

ListObject 컨트롤에 사용할 수 있는 이벤트는 다음과 같습니다.

참고 항목

작업

방법: 워크시트에 ListObject 컨트롤 추가

방법: ListObject 컨트롤 크기 조정

방법: ListObject 컨트롤에 새 행을 추가할 때 데이터 유효성 검사

방법: 데이터에 ListObject 열 매핑

방법: ListObject 컨트롤을 데이터로 채우기

방법: 데이터베이스의 데이터로 워크시트 채우기

개념

확장된 개체를 사용하여 Excel 자동화

런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장

런타임에 Office 문서에 컨트롤 추가

호스트 항목 및 호스트 컨트롤의 프로그래밍에 대한 제한 사항

기타 리소스

Office 개발 샘플 및 연습

Office 솔루션의 컨트롤에 데이터 바인딩

Office 문서의 컨트롤