ListObject.BeforeAddDataBoundRow 이벤트(2007 시스템)

업데이트: 2008년 7월

데이터에 바인딩되어 있는 ListObject 컨트롤에 새 행을 추가하려고 시도하기 직전에 발생합니다.

네임스페이스:  Microsoft.Office.Tools.Excel
어셈블리:  Microsoft.Office.Tools.Excel.v9.0(Microsoft.Office.Tools.Excel.v9.0.dll)

구문

Public Event BeforeAddDataBoundRow As BeforeAddDataBoundRowEventHandler

Dim instance As ListObject
Dim handler As BeforeAddDataBoundRowEventHandler

AddHandler instance.BeforeAddDataBoundRow, handler
public event BeforeAddDataBoundRowEventHandler BeforeAddDataBoundRow

설명

이 이벤트는 ListObject 컨트롤이 데이터에 바인딩되어 있는 경우에만 발생합니다.

이 이벤트는 Microsoft Office Excel 사용자 인터페이스를 통해 새 행이 추가되는 경우에만 발생하며 프로그래밍 방식으로 새 행이 추가되는 경우에는 발생하지 않습니다.

이 이벤트를 처리하여 추가로 유효성을 검사하거나 행 추가를 취소할 수 있습니다.

예제

다음 코드 예제에서는 DataTableListObject를 만들고 DataTableListObject를 바인딩합니다. 그런 다음 BeforeAddDataboundRow() 이벤트 처리기를 만듭니다. 이벤트를 테스트하려면 시트 1에서 ListObject에 새 행을 수동으로 추가합니다. 이벤트 처리기에서는 행을 제거하고 메시지를 표시합니다.

이 버전은 문서 수준 사용자 지정을 위한 것입니다.

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

    ' 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.
    BeforeAddDataBoundRowList = _
        Me.Controls.AddListObject(Me.Range("A1"), _
        "BeforeAddDataBoundRowList")

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


Private Sub List1_BeforeAddDataBoundRow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _
    Handles BeforeAddDataBoundRowList.BeforeAddDataBoundRow
    e.Cancel = True
    MessageBox.Show("This data is read-only.")

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

    // 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.BeforeAddDataBoundRow += new 
        Microsoft.Office.Tools.Excel.
        BeforeAddDataBoundRowEventHandler(
        list1_BeforeAddDataBoundRow);
}

void list1_BeforeAddDataBoundRow(object sender, 
    Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs e)
{
    e.Cancel = true;
    MessageBox.Show("This data is read-only.");
}

이 버전은 응용 프로그램 수준 추가 기능을 위한 것입니다. 이 코드 예제를 사용하려면 using System.Data; 지시문(C#을 사용하는 경우) 또는 Imports System.Data 문(Visual Basic을 사용하는 경우)을 추가합니다.

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

    ' 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 vstoWorksheet As Worksheet = CType( _
        Me.Application.ActiveWorkbook.Worksheets(1),  _
        Excel.Worksheet).GetVstoObject()
    BeforeAddDataBoundRowList = _
        vstoWorksheet.Controls.AddListObject( _
        vstoWorksheet.Range("A1"), _
        "BeforeAddDataBoundRowList")

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


Private Sub List1_BeforeAddDataBoundRow(ByVal sender As Object, _
    ByVal e As Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _
    Handles BeforeAddDataBoundRowList.BeforeAddDataBoundRow
    e.Cancel = True
    System.Windows.Forms.MessageBox.Show("This data is read-only.")

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

    // 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 = ((Excel.Worksheet)
        this.Application.ActiveWorkbook.Worksheets[1]).GetVstoObject();
    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.BeforeAddDataBoundRow += new                
        BeforeAddDataBoundRowEventHandler(
        list1_BeforeAddDataBoundRow);
}

void list1_BeforeAddDataBoundRow(object sender,
    Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs e)
{
    e.Cancel = true;
    System.Windows.Forms.MessageBox.Show("This data is read-only.");
}

권한

  • 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.

참고 항목

참조

ListObject 클래스

ListObject 멤버

Microsoft.Office.Tools.Excel 네임스페이스

변경 기록

날짜

변경 내용

이유

2008년 7월

응용 프로그램 수준 추가 기능의 코드 예제 버전이 추가되었습니다.

SP1 기능 변경