Condividi tramite


Controllo ListObject

Il controllo ListObject è un elenco che espone eventi e può essere associato a dati. Quando si aggiunge un elenco a un foglio di lavoro, in Visual Studio viene creato un controllo ListObject per il quale è possibile eseguire la programmazione diretta senza dover passare al modello a oggetti di Microsoft Office Excel.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Excel 2007 ed Excel 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Creazione del controllo

Nei progetti a livello di documento, è possibile aggiungere i controlli ListObject a un foglio di lavoro in fase di progettazione o di esecuzione. Nei progetti a livello di applicazione, è possibile aggiungere i controlli ListObject ai fogli di lavoro solo durante la fase di esecuzione. Per ulteriori informazioni, vedere Procedura: aggiungere controlli ListObject a fogli di lavoro.

Nota

Per impostazione predefinita, gli oggetti elenco creati dinamicamente non vengono resi persistenti nel foglio di lavoro come controlli host quando il foglio di lavoro viene chiuso. Per ulteriori informazioni, vedere Aggiunta di controlli ai documenti di Office in fase di esecuzione.

Associazione di dati al controllo

Un controllo ListObject supporta l'associazione dati semplice e complessa. Il controllo ListObject può essere associato a un'origine dati mediante le proprietà DataSource e DataMember in fase di progettazione oppure mediante il metodo SetDataBinding in fase di esecuzione.

Nota

L'oggetto ListObject viene aggiornato automaticamente quando viene associato a un'origine dati, ad esempio DataTable, che genera eventi al variare dei dati. Se l'oggetto ListObject viene associato a un'origine dati che non genera eventi al variare dei dati, è necessario chiamare il metodo RefreshDataRow o RefreshDataRows per aggiornare l'oggetto ListObject.

Quando si aggiunge un oggetto ListObject a un foglio di lavoro eseguendo il mapping di un elemento di schema ripetitivo a tale cella, Visual studio esegue automaticamente il mapping dell'oggetto ListObject al dataset generato. Tuttavia, l'oggetto ListObject non viene associato automaticamente ai dati. È possibile associare l'oggetto ListObject al dataset in fase di progettazione o in fase di esecuzione in un progetto a livello di documento. È possibile associare a livello di codice l'oggetto ListObject al dataset in fase di esecuzione in un componente aggiuntivo a livello di applicazione.

Poiché i dati sono distinti dal controllo ListObject, è necessario aggiungere e rimuovere i dati tramite il DataSet associato e non in modo diretto mediante ListObject. Se i dati nel DataSet associato vengono aggiornati attraverso un qualsiasi meccanismo, il controllo ListObject rifletterà automaticamente tali modifiche. Per ulteriori informazioni, vedere Associazione di dati ai controlli nelle soluzioni Office.

È possibile inserire rapidamente valori in un controllo ListObject associando il controllo ListObject a un'origine dati. Se i dati vengono modificati in un controllo ListObject con associazione a dati, le modifiche vengono apportate automaticamente anche nell'origine dati. Se si desidera inserire valori in un controllo ListObject per poi consentire all'utente di modificare i dati nel controllo ListObject senza modificare l'origine dati, è possivile utilizzare il metodo Disconnect per disconnettere il controllo ListObject dall'origine dati. Per ulteriori informazioni, vedere Procedura: riempire controlli ListObject con dati.

Nota

L'associazione dati non è supportata per i controlli ListObject sovrapposti.

Miglioramento delle prestazioni nei controlli ListObject

La lettura di un file XML in un controllo ListObject con associazione dati tende a diventare più lenta se si associa prima il controllo e poi si chiama il metodo ReadXml per riempire il DataSet. Per migliorare le prestazioni, chiamare ReadXml prima di eseguire l'associazione al controllo.

Disconnessione di controlli ListObject dall'origine dati

Dopo avere inserito i dati in un controllo ListObject associandolo a un'origine dati, è possibile disconnetterlo in modo che le modifiche apportate ai dati nell'oggetto elenco non influiscano sull'origine dati. Per ulteriori informazioni, vedere Procedura: riempire controlli ListObject con dati.

Ripristino dell'ordine di colonne e righe

Quando si associano dati a un controllo ListObject aggiunto a un documento in fase di progettazione, Visual Studio tiene traccia dell'ordine di colonne e righe ogni volta che viene salvata la cartella di lavoro. Se un utente sposta colonne o righe del controllo ListObject in fase di esecuzione, il nuovo ordine verrà conservato alla successiva apertura della cartella di lavoro e il controllo ListObject verrà di nuovo associato all'origine dati.

Se si desidera ripristinare l'ordine originale di colonne e righe del controllo ListObject, è possibile chiamare il metodo ResetPersistedBindingInformation. Questo metodo consente di rimuovere le proprietà del documento personalizzate relative all'ordine di colonne e righe del controllo ListObject specificato. Chiamare questo metodo dall'evento Shutdown del foglio di lavoro se non si desidera conservare l'ordine di colonne e righe del controllo ListObject.

Formattazione

La formattazione che è possibile applicare a un oggetto Microsoft.Office.Interop.Excel.ListObject può essere applicata a un controllo Microsoft.Office.Tools.Excel.ListObject. La formattazione include bordi, tipi di carattere, formati numerici e stili. Gli utenti finali possono risistemare le colonne in un controllo ListObject associato a dati; queste modifiche rimarranno all'interno del documento, a patto che il controllo ListObject sia stato aggiunto al documento in fase di progettazione. Alla successiva apertura del documento, l'oggetto elenco sarà associato alla stessa origine dati, ma l'ordine delle colonne rifletterà le modifiche apportate dall'utente.

Aggiunta e rimozione di colonne in fase di esecuzione

Non è possibile aggiungere o rimuovere manualmente colonne in un controllo ListObject associato a dati in fase di esecuzione. Se un utente finale tenta di eliminare una colonna, questa verrà immediatamente ripristinata e le eventuali colonne aggiunte verranno rimosse. Si consiglia di scrivere codice per indicare agli utenti perché non possono eseguire queste azioni su un controllo ListObject associato a dati. Visual Studio fornisce diversi eventi su un controllo ListObject in relazione all'associazione dati. Ad esempio, è possibile utilizzare l'evento OriginalDataRestored per avvertire gli utenti che i dati che hanno tentato di modificare non possono essere rimossi e sono stati ripristinati.

Aggiunta e rimozione di righe in fase di esecuzione

È possibile aggiungere o rimuovere manualmente le righe in un controllo ListObject associato a dati, a patto che l'origine dati consenta l'aggiunta di nuove righe e non sia di sola lettura. È possibile scrivere codice per eventi come BeforeAddDataBoundRow per convalidare i dati. Per ulteriori informazioni, vedere Procedura: convalidare dati quando viene aggiunta una nuova riga a un controllo ListObject.

Talvolta la relazione fra l'oggetto elenco e l'origine dati provoca errori di routine. Ad esempio, è possibile mappare le colonne che si desidera visualizzare nel controllo ListObject. In tal modo, se si omettono colonne che prevedono restrizioni (ad esempio un campo che non accetta valori null), ogni creazione di riga comporta la generazione di errori. È possibile scrivere codice per aggiungere i valori mancanti in un gestore eventi per l'evento ErrorAddDataBoundRow.

Ridenominazione di controlli ListObject in Excel

Excel consente agli utenti di modificare in fase di esecuzione il nome delle tabelle di Excel utilizzando la scheda Progettazione. Tuttavia, il controllo ListObject non supporta questa funzionalità. Se un utente tenta di ridenominare una tabella di Excel che corrisponde a un controllo ListObject, il nome della tabella di Excel verrà automaticamente riconvertito in quello originale al salvataggio della cartella di lavoro.

Eventi

Per il controllo ListObject sono disponibili gli eventi seguenti:

Vedere anche

Attività

Procedura: aggiungere controlli ListObject a fogli di lavoro

Procedura: ridimensionare i controlli ListObject

Procedura: convalidare dati quando viene aggiunta una nuova riga a un controllo ListObject

Procedura: eseguire il mapping delle colonne ListObject ai dati

Procedura: riempire controlli ListObject con dati

Procedura: popolare fogli di lavoro con dati da un database

Concetti

Automazione di Excel utilizzando oggetti estesi

Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione

Aggiunta di controlli ai documenti di Office in fase di esecuzione

Limitazioni a livello di codice degli elementi e dei controlli host

Altre risorse

Procedure dettagliate ed esempi di sviluppo di applicazioni per Microsoft Office

Associazione di dati ai controlli nelle soluzioni Office

Controlli nei documenti di Office