2010-07-07 5 views
1

i liée à une source de données datagridview. Maintenant, le problème est que les colonnes de mon DataGridView ne peuvent pas être personnalisées. Est-ce que quelqu'un sait comment faire ça? Il semble que les colonnes soient créées dynamiquement à partir de la source de données. J'ai besoin de personnaliser la police, les noms des colonnes de couleurs, etc ... des pensées?liant une source de données datagridview à une source de données

Répondre

3

Si vous effectuez cette opération en C# (?), Vous pouvez définir la propriété datagridview AutoGenerateColumns sur false et les ajouter dynamiquement vous-même. Cela vous permettra ensuite de les personnaliser.

La colonne datagridview a un DataPropertyName que vous définissez au nom de la colonne dans la donnée que vous voulez afficher.

Par exemple:

// Create new combo box column. 
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn(); 

// Set properties. 
column.DataPropertyName = colName; 
column.Name = colName; 
column.HeaderText = colName; 
column.DropDownWidth = 160; 
column.Width = 90; 
column.MaxDropDownItems = 5; 
column.FlatStyle = FlatStyle.Standard; 

datagridview.Columns.Add(column); 

Vous Rabattre juste à datatable.

+0

Après avoir défini AutoGenerateColumns sur false, comment lier les colonnes? – gd2

+0

Si cette réponse est utile, pouvez-vous lui donner un vote ou une marque comme réponse? Merci – w69rdy

+0

Salut - merci pour la mise à jour. La partie que je ne comprends pas est comment lier une colonne qui est définie à une base de données dynamique. pouvez-vous fournir l'exemple de code pour la liaison? merci greg – gd2

1

Vous devriez pouvoir générer automatiquement les colonnes tout en les personnalisant.

Par exemple, pour changer la police d'une colonne que vous pourriez faire:

dataGridView.Columns["ColumnName"].DefaultCellStyle.Font = new Font("Tahoma, 15); 

Pour changer la couleur du nom de la colonne:

dataGridView.Columns["ColumnName"].HeaderCell.Style.BackColor = Color.Blue; 

J'ai essayé ces deux dans une auto généré DataGridView lié à un DataTable et cela fonctionne pour moi.

0

Utilisez plutôt l'annotation. Exemple:

internal class FailedItem 
{ 
    ... 
    [DisplayName("Clarify reason")] 
    public string Reason 
    { get; private set; } 
    ... 
} 
Questions connexes