Поделиться через


Практическое руководство. Обработка ошибок, происходящих при добавлении новой строки в элемент управления ListObject

Обновлен: Июль 2008

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Проекты уровня документа

  • Excel 2007

  • Excel 2003

Проекты уровня приложения

  • Excel 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Пользователи могут добавлять новые строки в элемент управления ListObject, связанный с данными. Иногда связь объекта списка с источником данных вызывает ошибки выполнения. Например, можно указать, какие столбцы будут отображаться в элементе управления ListObject, чтобы, если Вы опустите столбцы с ограничениями, такими как поле, которое не может принимать нулевые значения, ошибки будут возникать каждый раз при создании строки. Можно написать код для добавления отсутствующих значений в обработчике событий для события ErrorAddDataBoundRow.

Обработка ошибок, происходящих при добавлении строки с привязкой к данным

  1. Создайте переменную для идентификатора и DataTable на уровне класса.

    Dim id As Integer = 0
    Dim employeeTable As System.Data.DataTable
    
    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Создайте DataTable и добавьте пример столбцов и данные в обработчик событий Startup класса Sheet1 (в проекте на уровне документа) или ThisAddIn (в проекте на уровне приложения).

    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);
    
  3. В обработчик событий для события ErrorAddDataBoundRow добавьте следующий увеличившийся номер идентификатора в поле 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;
        }
    }
    

Компиляция кода

  • В данном примере кода предполагается, что на листе, к которому применяется этот код, имеется элемент управления ListObject с именем list1.

См. также

Задачи

Практическое руководство. Сопоставление столбцов элемента управления ListObject данным

Практическое руководство. Обработка данных при добавлении новой строки в элемент управления ListObject

Основные понятия

Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения

Разработка надстроек уровня приложения для Excel

Добавление элементов управления в документы Office во время выполнения

Элемент управления ListObject

Основные сведения о сохранении порядка столбцов и строк ListObject.

Другие ресурсы

Элементы управления в документах Office

Элементы управления ведущего приложения Excel

Журнал изменений

Дата

Журнал

Причина

Июль 2008

Изменен пример так, что его можно использовать в надстройке уровня приложения.

Изменение функции SP1.