2012-03-19 17 views
6

Sul mio Windows Form ho un componente DataGridView, che è associato a BindingSource. BindingSource è un'origine dati oggetto per un oggetto EntityFramework.DataGridView genera automaticamente le colonne

Alcune volte vengono rinnovate le colonne nel mio DataBridView. A volte tutte le proprietà vengono aggiunte come colonne, ma ora rimuovono anche tutte le mie colonne. Quindi ho perso tutte le mie impostazioni.

Quando le colonne vengono automaticamente aggiunte?

(sto usando VS.NET 2010)

Aggiornamento:

// 
// Summary: 
//  Gets or sets a value indicating whether columns are created automatically 
//  when the System.Windows.Forms.DataGridView.DataSource or System.Windows.Forms.DataGridView.DataMember 
//  properties are set. 
// 
// Returns: 
//  true if the columns should be created automatically; otherwise, false. The 
//  default is true. 
[Browsable(false)] 
[EditorBrowsable(EditorBrowsableState.Advanced)] 
[DefaultValue(true)] 
public bool AutoGenerateColumns { get; set; } 

La proprietà non si fece vedere nella finestra di progettazione, e "nascondere le proprietà avanzate" non sia selezionata.

Aggiornamento 2: Quando aggiorno il modello di struttura dell'entità, tutte le colonne vengono aggiunte di nuovo. Posso solo impostare la proprietà nel costruttore del modulo. Questo è molto fastidioso.

+0

Imposta la proprietà [AutoGenerateColumns] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.autogeneratecolumns.aspx) di DataGridView su false. –

+0

Sto impostando AutoGenerateColumns = false nel costruttore di moduli ma continuo ad avere il problema –

risposta

4

In realtà non so quando succede, ma tendo a creare tutte le colonne manualmente. Creo le colonne nel designer e imposta la proprietà AutoGenerateColumns su false nel mio codice.

+1

Grazie mille. Questo è quello che ho fatto, progettato manualmente le colonne e le dimensioni. La proprietà non viene visualizzata nel designer, ma l'ho impostata ora nel codice. – Bojo

+1

Sì, non so perché questa proprietà non può essere impostata nel designer - è stato così dal Visual Studio 2005 ... –

2

aggiungere questo codice o cambia le proprietà DataGridView AutoGenerateColumns false

DataGridView1.AutoGenerateColumns=false; 
+1

Vedere l'aggiornamento della mia domanda. Non posso ancora rispondere alle domande. – Bojo

1

Provare lasciare colonne prima di auto generati e impostarlo visibilità falso. Se non aiuta provare a lasciarle tutte con Visible = false. Ci scusiamo per il cattivo inglese.

1

Imposta la proprietà AutoGenerateColumns su False ma ricorda di farlo appena prima del collegamento dati. es .: DataGridView1.AutoGenerateColumns=false; DataGridView1.DataSource=getData();

Per impostazione predefinita è impostato su Vero.

Problemi correlati