방법: ListObject 컨트롤에 새 행이 추가될 때 오류 처리
업데이트: 2008년 7월
적용 대상 |
---|
이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다. 문서 수준 프로젝트
응용 프로그램 수준 프로젝트
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
사용자가 데이터에 바인딩된 ListObject 컨트롤에 새 행을 추가할 수 있습니다. 일부 경우에는 목록 개체와 데이터 소스의 관계로 인해 루틴 오류가 발생할 수 있습니다. 예를 들어 ListObject에 표시하려는 열을 매핑할 수 있으므로, null 값을 사용할 수 없는 필드 같이 제한 사항이 있는 열을 지정하지 않으면 행을 만들 때마다 오류가 발생합니다. ErrorAddDataBoundRow 이벤트의 이벤트 처리기에서 누락 값을 추가하는 코드를 작성할 수 있습니다.
데이터 바인딩된 행을 추가할 때 발생하는 오류를 처리하려면
클래스 수준에서 ID와 DataTable에 대한 변수를 만듭니다.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
새 DataTable을 만들고 Sheet1 클래스(문서 수준 프로젝트의 경우) 또는 ThisAddIn 클래스(응용 프로그램 수준 프로젝트의 경우)의 Startup 이벤트 처리기에서 샘플 열과 데이터를 추가합니다.
employeeTable = New System.Data.DataTable("Employees") Dim column As System.Data.DataColumn = employeeTable.Columns.Add("Id", GetType(Int32)) column.AllowDBNull = False employeeTable.Columns.Add("FirstName", GetType(String)) employeeTable.Columns.Add("LastName", GetType(String)) employeeTable.Columns.Add("Age", GetType(Int32)) employeeTable.Rows.Add(id, "Nancy", "Anderson", 56) employeeTable.Rows.Add(id, "Robert", "Brown", 44) id += 1 list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age")
employeeTable = new System.Data.DataTable("Employees"); System.Data.DataColumn column = employeeTable.Columns.Add("Id", typeof(int)); column.AllowDBNull = false; employeeTable.Columns.Add("FirstName", typeof(string)); employeeTable.Columns.Add("LastName", typeof(string)); employeeTable.Columns.Add("Age", typeof(int)); employeeTable.Rows.Add(id, "Nancy", "Anderson", "56"); employeeTable.Rows.Add(id, "Robert", "Brown", "44"); id++; list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age"); list1.ErrorAddDataBoundRow += new Microsoft.Office.Tools.Excel. ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
ErrorAddDataBoundRow 이벤트의 이벤트 처리기에서 Id 필드에 다음 ID 번호를 추가하고 행을 다시 추가합니다.
Private Sub list1_ErrorAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _ Handles list1.ErrorAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If TypeOf (e.InnerException) Is NoNullAllowedException Then row("Id") = id id += 1 e.Retry = True End If End Sub
private void list1_ErrorAddDataBoundRow(object sender, Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e) { System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row; if (e.InnerException is NoNullAllowedException) { row["Id"]= id; id++; e.Retry = true; } }
코드 컴파일
- 이 코드 예제에서는 이 코드가 나타나는 워크시트에 list1이라는 기존의 ListObject가 있는 것으로 가정합니다.
참고 항목
작업
방법: ListObject 컨트롤에 새 행을 추가할 때 데이터 유효성 검사
개념
런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장
기타 리소스
변경 기록
날짜 |
변경 내용 |
원인 |
---|---|---|
2008년 7월 |
응용 프로그램 수준 추가 기능에 사용할 수 있도록 예제가 수정되었습니다. |
SP1 기능 변경 |