Share via


ListObject.ErrorAddDataBoundRow 事件

當使用者嘗試將一列加入至有資料繫結的 ListObject 控制項,但是無法加入此列時發生。

命名空間:  Microsoft.Office.Tools.Excel
組件:  Microsoft.Office.Tools.Excel (在 Microsoft.Office.Tools.Excel.dll 中)

語法

'宣告
Event ErrorAddDataBoundRow As ErrorAddDataBoundRowEventHandler
event ErrorAddDataBoundRowEventHandler ErrorAddDataBoundRow

備註

這個事件只在 ListObject 控制項已繫結至資料時引發。

可處理這個事件以嘗試修正可能的錯誤。

範例

下列程式碼範例會建立 DataTableListObject,並將 ListObject 繫結至 DataTable。 接著會建立 ErrorAddDataBoundRow 事件處理常式。 若要測試此事件,請以手動方式加入一個新資料列至 ListObject,並輸入姓氏 "Chan" 和名字。 此事件處理常式會顯示一個訊息。

這是示範文件層級自訂的版本。

    WithEvents ErrorAddDataBoundRowList As _
        Microsoft.Office.Tools.Excel.ListObject
    Private Sub ListObject_ErrorAddDataBoundRow()
        ' Create a new DataSet and DataTable.
        Dim ds As New DataSet()
        Dim dt As DataTable = ds.Tables.Add("Customers")
        Dim lastName As New DataColumn("LastName")
        dt.Columns.Add(lastName)
        dt.Columns.Add(New DataColumn("FirstName"))

        Dim myUC As New UniqueConstraint("CustConstraint", _
            lastName)
        dt.Constraints.Add(myUC)

        ' Add a new row to the DataTable.
        Dim dr As DataRow = dt.NewRow()
        dr("LastName") = "Chan"
        dr("FirstName") = "Gareth"
        dt.Rows.Add(dr)

        ' Create a list object.
        ErrorAddDataBoundRowList = _
            Me.Controls.AddListObject(Me.Range("A1"), _
            "ErrorAddDataBoundRowList")

        ' Bind the list object to the DataTable.
        ErrorAddDataBoundRowList.AutoSetDataBoundColumnHeaders = True
        ErrorAddDataBoundRowList.SetDataBinding(ds, "Customers", _
            "LastName", "FirstName")
    End Sub


    Private Sub List1_ErrorAddDataBoundRow(ByVal sender As Object, _
        ByVal e As Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _
        Handles ErrorAddDataBoundRowList.ErrorAddDataBoundRow
        MessageBox.Show("Last names must be unique.")

    End Sub

private void ListObject_ErrorAddDataBoundRow()
{
    // Create a new DataSet and DataTable.
    DataSet ds = new DataSet();
    DataTable dt = ds.Tables.Add("Customers");
    DataColumn lastName = new DataColumn("LastName");
    dt.Columns.Add(lastName);
    dt.Columns.Add(new DataColumn("FirstName"));

    UniqueConstraint myUC = new UniqueConstraint( "CustConstraint", 
        lastName);
    dt.Constraints.Add(myUC);

    // Add a new row to the DataTable.
    DataRow dr = dt.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    dt.Rows.Add(dr);

    // Create a list object.
    Microsoft.Office.Tools.Excel.ListObject list1 = 
        this.Controls.AddListObject(
        this.Range["A1", missing], "list1");

    // Bind the list object to the DataTable.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.SetDataBinding(ds, "Customers", "LastName",
        "FirstName");

    // Create the event handler.
    list1.ErrorAddDataBoundRow += new 
        Microsoft.Office.Tools.Excel.
        ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
}

void list1_ErrorAddDataBoundRow(object sender, 
    Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e)
{
    MessageBox.Show("Last names must be unique.");
}

這是示範應用程式層級增益集的版本。 若要使用這個程式碼範例,請加入 using System.Data; 指示詞 (如果您使用的是 C#) 或 Imports System.Data 陳述式 (如果您使用的是 Visual Basic)。

WithEvents ErrorAddDataBoundRowList As ListObject
Private Sub ListObject_ErrorAddDataBoundRow()
    ' Create a new DataSet and DataTable.
    Dim ds As New DataSet()
    Dim dt As DataTable = ds.Tables.Add("Customers")
    Dim lastName As New DataColumn("LastName")
    dt.Columns.Add(lastName)
    dt.Columns.Add(New DataColumn("FirstName"))

    Dim myUC As New UniqueConstraint("CustConstraint", _
        lastName)
    dt.Constraints.Add(myUC)

    ' Add a new row to the DataTable.
    Dim dr As DataRow = dt.NewRow()
    dr("LastName") = "Chan"
    dr("FirstName") = "Gareth"
    dt.Rows.Add(dr)

    ' Create a list object.
    Dim NativeWorksheet As Microsoft.Office.Interop.Excel.Worksheet =
        Me.Application.Worksheets(1)
    Dim vstoWorksheet As Microsoft.Office.Tools.Excel.Worksheet =
            Globals.Factory.GetVstoObject(NativeWorksheet)
    ErrorAddDataBoundRowList = _
        vstoWorksheet.Controls.AddListObject(vstoWorksheet.Range("A1"), _
        "ErrorAddDataBoundRowList")

    ' Bind the list object to the DataTable.
    ErrorAddDataBoundRowList.AutoSetDataBoundColumnHeaders = True
    ErrorAddDataBoundRowList.SetDataBinding(ds, "Customers", _
        "LastName", "FirstName")
End Sub


Private Sub List1_ErrorAddDataBoundRow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _
    Handles ErrorAddDataBoundRowList.ErrorAddDataBoundRow
    System.Windows.Forms.MessageBox.Show("Last names must be unique.")

End Sub
private void ListObject_ErrorAddDataBoundRow()
{
    // Create a new DataSet and DataTable.
    DataSet ds = new DataSet();
    DataTable dt = ds.Tables.Add("Customers");
    DataColumn lastName = new DataColumn("LastName");
    dt.Columns.Add(lastName);
    dt.Columns.Add(new DataColumn("FirstName"));

    UniqueConstraint myUC = new UniqueConstraint("CustConstraint",
        lastName);
    dt.Constraints.Add(myUC);

    // Add a new row to the DataTable.
    DataRow dr = dt.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    dt.Rows.Add(dr);

    // Create a list object.
    Worksheet vstoWorksheet =
        Globals.Factory.GetVstoObject(this.Application.ActiveWorkbook.Worksheets[1]);
    ListObject list1 =
        vstoWorksheet.Controls.AddListObject(
        vstoWorksheet.Range["A1", missing], "list1");

    // Bind the list object to the DataTable.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.SetDataBinding(ds, "Customers", "LastName",
        "FirstName");

    // Create the event handler.
    list1.ErrorAddDataBoundRow += new
        ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
}

void list1_ErrorAddDataBoundRow(object sender,
    Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e)
{
    System.Windows.Forms.MessageBox.Show("Last names must be unique.");
}

.NET Framework 安全性

請參閱

參考

ListObject 介面

Microsoft.Office.Tools.Excel 命名空間