次の方法で共有


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 を作成し、ListObjectDataTable にバインドします。次に、OriginalDataRestored イベント ハンドラーを作成します。イベントをテストするには、Sheet 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 名前空間