ListObject-Steuerelement
Das ListObject-Steuerelement ist eine Liste, die Ereignisse verfügbar macht und an Daten gebunden werden kann. Beim Hinzufügen einer Liste zu einem Arbeitsblatt erstellt Visual Studio ein ListObject-Steuerelement, das Sie direkt für die Programmierung verwenden können, ohne das Objektmodell von Microsoft Office Excel durchlaufen zu müssen.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Excel 2007 und Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
Erstellen des Steuerelements
In Projekten auf Dokumentebene können Sie einem Arbeitsblatt ListObject-Steuerelemente zur Entwurfszeit oder zur Laufzeit hinzufügen. In Projekten auf Anwendungsebene können Arbeitsblättern ListObject-Steuerelemente nur zur Laufzeit hinzugefügt werden. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen von ListObject-Steuerelementen zu Arbeitsblättern.
Tipp
Standardmäßig werden dynamisch erstellte Listenobjekte beim Schließen des Arbeitsblatts nicht als Hoststeuerelemente im Arbeitsblatt beibehalten. Weitere Informationen hierzu finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.
Binden von Daten an das Steuerelement
Das ListObject-Steuerelement unterstützt die einfache und die komplexe Datenbindung. Sie können das ListObject-Steuerelement an eine Datenquelle binden, indem Sie zur Entwurfszeit die DataSource-Eigenschaft und die DataMember-Eigenschaft oder zur Laufzeit die SetDataBinding-Methode verwenden.
Tipp
Das ListObject wird automatisch aktualisiert, wenn es an eine Datenquelle gebunden ist. Beispielsweise werden für eine DataTable Ereignisse ausgelöst, wenn die Daten geändert werden. Wenn Sie das ListObject an eine Datenquelle binden, die bei Änderung der Daten keine Ereignisse auslöst, müssen Sie zur Aktualisierung von ListObject die RefreshDataRow-Methode oder die RefreshDataRows-Methode aufrufen.
Wenn Sie einer Arbeitsblattzelle ein ListObject hinzufügen, indem Sie dieser Zelle ein sich wiederholendes Schemaelement zuordnen, ordnet Visual Studio dem generierten DataSet automatisch das ListObject zu. Das ListObject wird jedoch nicht automatisch an die Daten gebunden. Sie können das ListObject zur Entwurfszeit an das Dataset binden, in einem Projekt auf Dokumentebene auch während der Laufzeit. Sie können das ListObject in einem Add-In auf Anwendungsebene zur Laufzeit programmgesteuert an das DataSet binden.
Da die Daten und das ListObject getrennt sind, sollten Sie die Daten über das gebundene Dataset hinzufügen und entfernen – nicht direkt über das ListObject. Wenn die Daten im gebundenen Dataset auf beliebige Weise aktualisiert werden, werden diese Änderungen vom ListObject-Steuerelement automatisch nachvollzogen. Weitere Informationen hierzu finden Sie unter Binden von Daten an Steuerelemente in Office-Projektmappen.
Sie können ein ListObject-Steuerelement schnell mit Daten füllen, indem Sie das ListObject an eine Datenquelle binden. Wenn Sie die Daten in einem datengebundenen ListObject ändern, werden die Änderungen automatisch in die Datenquelle übernommen. Wenn Sie ein ListObject mit Daten füllen möchten und es dem Benutzer anschließend möglich sein soll, Daten im ListObject ohne Änderung der Datenquelle zu ändern, können Sie die Disconnect-Methode verwenden, um das ListObject von der Datenquelle zu trennen. Weitere Informationen finden Sie unter Gewusst wie: Füllen eines ListObject-Steuerelements mit Daten.
Tipp
Datenbindung wird nicht für überlappende ListObject-Steuerelemente unterstützt.
Verbessern der Leistung von ListObject-Steuerelementen
Das Einlesen einer XML-Datei in ein datengebundenes ListObject-Steuerelement ist normalerweise langsamer, wenn Sie das Steuerelement zuerst binden und anschließend ReadXml aufrufen, um das Dataset zu füllen. Rufen Sie ReadXml vor dem Binden des Steuerelements auf, um die Leistung zu verbessern.
Trennen der Verbindung von "ListObject"-Steuerelementen mit der Datenquelle
Wenn Sie ein ListObject-Steuerelement durch Binden an eine Datenquelle mit Daten gefüllt haben, können Sie die Verbindung trennen, damit Änderungen an den Daten im Listenobjekt die Datenquelle nicht beeinträchtigen. Weitere Informationen finden Sie unter Gewusst wie: Füllen eines ListObject-Steuerelements mit Daten.
Wiederherstellen der Reihenfolge der Spalten und Zeilen
Wenn Sie Daten an ein ListObject-Steuerelement binden, das einem Dokument zur Entwurfszeit hinzugefügt wurde, verfolgt Visual Studio bei jedem Speichern der Arbeitsmappe die Reihenfolge der Spalten und Zeilen. Wenn die Zeilen bzw. Spalten von ListObject vom Benutzer zur Laufzeit verschoben werden, wird die neue Reihenfolge beim nächsten Öffnen der Arbeitsmappe beibehalten, und das ListObject-Steuerelement erstellt eine neue Bindung an die Datenquelle.
Wenn Sie ListObject auf die ursprüngliche Reihenfolge von Spalten und Zeilen zurücksetzen möchten, können Sie hierfür die ResetPersistedBindingInformation-Methode aufrufen. Diese Methode entfernt die benutzerdefinierten Dokumenteigenschaften in Bezug auf die Spalten- und Zeilenreihenfolge des angegebenen ListObject. Rufen Sie diese Methode vom Shutdown-Ereignis der Arbeitsmappe aus auf, wenn die Spalten- und Zeilenreihenfolge von ListObject nicht beibehalten werden soll.
Formatierung
Die Formatierungen für das Microsoft.Office.Interop.Excel.ListObject können auch auf das Microsoft.Office.Tools.Excel.ListObject-Steuerelement angewendet werden. Dazu gehören Rahmen, Schriftarten, Zahlenformatierungen und Formate. Endbenutzer können die Spalten in einem datengebundenen ListObject neu anordnen. Die Änderungen werden im Dokument beibehalten, vorausgesetzt das ListObject wurde dem Dokument zur Entwurfszeit hinzugefügt. Beim nächsten Öffnen des Dokuments ist das Listenobjekt weiterhin an die gleiche Datenquelle gebunden, die Spaltenreihenfolge gibt jedoch die vom Benutzer vorgenommenen Änderungen wieder.
Hinzufügen und Entfernen von Spalten zur Laufzeit
Sie können in einem datengebundenen ListObject-Steuerelement zur Laufzeit keine Spalten hinzufügen oder entfernen. Wenn ein Endbenutzer versucht, eine Spalte zu löschen, wird die Spalte sofort wiederhergestellt, und alle hinzugefügten Spalten werden entfernt. Aus diesem Grund ist es wichtig, Code zu schreiben, über den die Benutzer darüber aufgeklärt werden, warum diese Aktionen mit einem datengebundenen ListObject nicht ausgeführt werden können. Visual Studio stellt mehrere Ereignisse für ein ListObject in Zusammenhang mit der Datenbindung bereit. Beispielsweise können Sie Benutzer über das OriginalDataRestored-Ereignis darauf aufmerksam machen, dass die vermeintlich gelöschten Daten nicht gelöscht werden können und wiederhergestellt worden sind.
Hinzufügen und Entfernen von Zeilen zur Laufzeit
Sie können in einem datengebundenen ListObject-Steuerelement manuell Zeilen hinzufügen und entfernen, vorausgesetzt die Datenquelle gestattet das Hinzufügen neuer Zeilen und ist nicht schreibgeschützt. Sie können Code anhand von Ereignissen wie BeforeAddDataBoundRow schreiben, um die Daten zu überprüfen. Weitere Informationen finden Sie unter Gewusst wie: Überprüfen der Daten, wenn einem ListObject-Steuerelement eine neue Zeile hinzugefügt wird.
Manchmal verursacht die Beziehung des Listenobjekts zur Datenquelle routinemäßige Fehler. Sie können beispielsweise festlegen, welche Spalten im ListObject angezeigt werden sollen. Wenn Sie jedoch Spalten mit Einschränkungen auslassen, wie zum Beispiel ein Feld, das keine NULL-Werte enthalten kann, werden bei jedem Erstellen einer Zeile Fehler ausgelöst. Sie können Code schreiben, um die fehlenden Werte in einem Ereignishandler für das ErrorAddDataBoundRow-Ereignis hinzuzufügen.
Umbenennen von ListObject-Steuerelementen in Excel
Mit Excel können Benutzer den Namen von Excel-Tabellen zur Laufzeit über die Registerkarte Entwurf ändern. Allerdings unterstützt das ListObject-Steuerelement dieses Feature nicht. Wenn ein Benutzer versucht, eine Excel-Tabelle umzubenennen, die einem ListObject-Steuerelement entspricht, wird der Name der Excel-Tabelle beim Speichern der Arbeitsmappe automatisch auf den ursprünglichen Namen zurückgesetzt.
Ereignisse
Die folgenden Ereignisse sind für das ListObject-Steuerelement verfügbar:
Siehe auch
Aufgaben
Gewusst wie: Hinzufügen von ListObject-Steuerelementen zu Arbeitsblättern
Gewusst wie: Ändern der Größe von ListObject-Steuerelementen
Gewusst wie: Zuordnung von ListObject-Spalten zu Daten
Gewusst wie: Füllen eines ListObject-Steuerelements mit Daten
Gewusst wie: Auffüllen von Arbeitsblättern mit Daten aus einer Datenbank
Konzepte
Automatisieren von Excel mithilfe von erweiterten Objekten
Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit
Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit
Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen
Weitere Ressourcen
Beispiele und exemplarische Vorgehensweisen für die Programmierung mit Office