Comment personnaliser les données dans datagridview pendant la liaison de données
Je suis à la recherche d'un moyen de formater DataGridViewTextBoxColumn de sorte que la valeur à databinded est formaté lors de la liaison de données. Par exemple, j'ai une Société de propriété et j'ai besoin de prendre 5 premières lettres du nom de la Société lors de la liaison de données se produit.
Je pourrais accrocher sur les différents DataGridView événements (par exemple, RowsAdded) et une boucle sur toutes les lignes et de faire le tour, mais j'aimerais trouver plus sophistiqués façon de le faire. Depuis que j'ai décidé d'utiliser la liaison de données, en boucle par le biais de données et les modifier, il est un peu contre le databinding concept.
Ce que je suis après, c'est comment faire la même chose que ci-dessous, mais d'ajouter une mise en forme personnalisée logique:
dataGridView1.Columns[colSomeDate.Index].DataPropertyName = "SomeDate";
colSomeDate.DefaultCellStyle.Format = "yyyy";
Je pense que je devrais mettre en œuvre IFormatProvider, mais je n'arrive pas à comprendre comment je dois le mettre en œuvre.
dataGridView1.Columns[companyName.Index].DataPropertyName = "CompanyName";
companyName.DefaultCellStyle.FormatProvider = new ShortText(); //ShortText should implement IFormatProvider
source d'informationauteur Clack
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas à propos de la IFormatProvider, mais la DataGridViews CellFormatting-événement vous aider?
http://msdn.microsoft.com/en-us/library/z1cc356h.aspx?ppud=4
Ajouter une propriété à votre classe qui ne l'substringing pour vous, et de se lier à qui.
Voici ce que j'ai fait pour passer de la mine de travailler
C'est ce que j'ai ensuite mis dans mon gestionnaire de mise en forme de cellule
Il sonne comme IFormatProvider est exactement ce dont vous avez besoin. Ensuite, vous pouvez définir différents codes pour les différents formats que vous voulez pour les différents points de vue.
De Codeproject.
Ceci est un extrait de code que j'utilise pour un exemple de mise en œuvre de
IFormattable
etICustomFormatter
.Vous pourrait toujours faire appel à un format personnalisé fonction de la façon de votre page aspx:
Et puis dans votre code-behind de la page:
J'utilise généralement ValueConverters pour ce genre de comportement.
quelque chose comme:
Dans le contrôle/la page de ressources du nœud, vous aurez besoin d'ajouter quelque chose comme:
CompanyNameShortenerConverter devrait mettre en œuvre IValueConverter, et vous pouvez ajouter la logique de "raccourcir" les noms de la société adoptée dans le dans le "Convertir" la méthode.
Il conserve la mise en forme/UI logique distincte de la logique métier (c'est à dire sans avoir besoin d'ajouter un "helper propriété" qui raccourcit le nom).