Share via


ChangeReason 列舉型別

提供為何將原始資料還原為繫結至資料的 ListObject 的理由。

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

語法

'宣告
Public Enumeration ChangeReason
public enum ChangeReason

成員

成員名稱 說明
DataBoundColumnHeaderIsAutoSet ListObject 控制項的 AutoSetDataBoundColumnHeaders 屬性設定為 true 時,ListObject 控制項不允許使用者變更資料行行首。
ErrorInCommit ListObject 控制項中對資料進行的變更,無法讓這個控制項所繫結的資料來源認可。
FixedLengthDataSource ListObject 控制項所繫結的資料來源不允許加入或移除資料列。
FixedNumberOfColumnsInDataBoundList ListObject 控制項在繫結至資料之後,不允許加入或移除資料行。
Other 因為某個原因並未受到其他任何一個 ChangeReason 值所指定,所以原本的資料會加以儲存。
ReadOnlyDataSource ListObject 控制項所繫結的資料來源是唯讀的。

備註

ListObject 已繫結至資料,而使用者執行不被允許的動作時,ListObject 會自我還原至之前的狀態並引發 OriginalDataRestored 事件。 ChangeReason 列舉型別會提供為何會發生還原的資訊。

範例

下列程式碼範例會建立 DataTableListObject,並將 ListObject 繫結至 DataTable。 接著會建立 OriginalDataRestored 事件處理常式。 若要測試事件,請在工作表 1 的 ListObject 上方的資料行字母上按一下滑鼠右鍵,然後在捷徑功能表中按一下 [刪除]。 事件處理常式會取代資料行和資料行行首資料,並顯示一則訊息,指出還原了何種資料,以及為什麼要還原原始資料。

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

    WithEvents OriginalDataRestoredList As _
        Microsoft.Office.Tools.Excel.ListObject
    Private Sub ListObject_OriginalDataRestored()
        ' 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"))

        ' Add two new rows to the DataTable.
        Dim dr1 As DataRow = dt.NewRow()
        dr1("LastName") = "Chan"
        dr1("FirstName") = "Gareth"
        dt.Rows.Add(dr1)
        Dim dr2 As DataRow = dt.NewRow()
        dr2("LastName") = "Nitsche"
        dr2("FirstName") = "Sonja"
        dt.Rows.Add(dr2)

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

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

    Private Sub List1_OriginalDataRestored(ByVal sender As Object, _
        ByVal e As Microsoft.Office.Tools.Excel.OriginalDataRestoredEventArgs) _
        Handles OriginalDataRestoredList.OriginalDataRestored
        MessageBox.Show("This data is bound to a data source and " & _
        "will be restored. This change is: " & e.ChangeType.ToString() & _
        ". The reason is: " & e.ChangeReason.ToString() + ".")
    End Sub

private void ListObject_OriginalDataRestored()
{
    // 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"));

    // Add two new rows to the DataTable.
    DataRow dr1 = dt.NewRow();
    dr1["LastName"] = "Chan";
    dr1["FirstName"] = "Gareth";
    dt.Rows.Add(dr1);
    DataRow dr2 = dt.NewRow();
    dr2["LastName"] = "Nitsche";
    dr2["FirstName"] = "Sonja";
    dt.Rows.Add(dr2);

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

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

    // Create the event handler.
    list1.OriginalDataRestored += new 
        Microsoft.Office.Tools.Excel.
        OriginalDataRestoredEventHandler(list1_OriginalDataRestored);
}

void list1_OriginalDataRestored(object sender, 
    Microsoft.Office.Tools.Excel.OriginalDataRestoredEventArgs e)
{
    MessageBox.Show("This data is bound to a data source and " +
    "will be restored. This change is: " + e.ChangeType.ToString() +
    ". The reason is: " + e.ChangeReason.ToString() + ".");
}

請參閱

參考

Microsoft.Office.Tools.Excel 命名空間