ListObject 컨트롤에 새 행이 추가되면 데이터 유효성 검사
사용자는 데이터에 바인딩된 ListObject 컨트롤에 새 행을 추가할 수 있습니다. 데이터 원본에 대한 변경 내용을 커밋하기 전에 사용자 데이터의 유효성을 확인할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel의 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.
데이터 유효성 검사
데이터에 바인딩된 ListObject 에 행을 추가할 때마다 BeforeAddDataBoundRow 이벤트가 발생합니다. 데이터 유효성 검사를 수행하도록 이 이벤트를 처리할 수 있습니다. 예를 들어 18세에서 65세 사이의 직원만 데이터 원본에 추가할 수 있도록 애플리케이션에서 요구하는 경우 행을 추가하기 전에 입력한 나이가 이 범위에 포함되는지 확인합니다.
참고 항목
클라이언트뿐 아니라 서버에서의 사용자 입력도 항상 확인해야 합니다. 자세한 내용은 클라이언트 애플리케이션 보안을 참조하세요.
데이터 바인딩된 ListObject에 새 행을 추가할 때 데이터 유효성을 검사하려면
클래스 수준에서 ID 및 DataTable 에 대한 변수를 만듭니다.
새 DataTable을 만들고
Sheet1
클래스(문서 수준 프로젝트) 또는ThisAddIn
클래스(VSTO 추가 기능 프로젝트)의Startup
이벤트 처리기에 샘플 열과 데이터를 추가합니다.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.BeforeAddDataBoundRow +=new Microsoft.Office.Tools.Excel. BeforeAddDataBoundRowEventHandler(list1_BeforeAddDataBoundRow);
list1_BeforeAddDataBoundRow
이벤트 처리기에 코드를 추가하여 입력된 나이가 허용 가능한 범위 내에 포함되는지 확인합니다.private void list1_BeforeAddDataBoundRow(object sender, Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs e) { System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row; if (row["Age"] != null && row["Age"] != Convert.DBNull) { int ageEntered = (int)row["Age"]; if (ageEntered < 21 || ageEntered > 65) { System.Windows.Forms.MessageBox.Show ("Age must be between 21 and 65. The row cannot be added."); e.Cancel = true; return; } row["ID"] = id; id++; } else { System.Windows.Forms.MessageBox.Show("You must enter an age."); e.Cancel = true; } }
코드 컴파일
이 코드 예제에서는 이 코드가 표시되는 워크시트에 ListObject 이라는 기존 list1
가 있는 것으로 간주합니다.