Je suis en train d'utiliser un System.Windows.Forms.DataGrid
contrôle dans mon projet basé Compact Framework 3.5 Windows Mobile Professional 6 SDK pour afficher des propriétés des objets de type Something
en liant le DataGrid
à une instance List<SomethingWrapper>
comme ceci:Comment redimensionner des colonnes de DataGrid liées à la liste <T>, pas DataSet?
public class SomethingWrapper {
private Something data;
public SomethingWrapper(Something data) { this.data = data; }
public string Column1 { get { /* string from this.data */ } }
public string Column2 { get { /* string from this.data */ } }
}
public class SomethingList : List<SomethingWrapper> {
public SomethingList(IEnumerable<Something> items) {
foreach (var item in items) Add(new SomethingWrapper(item));
Sort((a, b) => a.Column2.CompareTo(b.Column2);
}
}
/* ... */
IEnumerable<Something> dataToShow = /* assume this is filled correctly */
SomethingDataGrid.DataSource = new SomethingList(dataToShow);
Cela semble fonctionner correctement: les données correctes sont affichées dans la grille avec deux colonnes appelées Column1
et Column2
et triées sur la deuxième colonne. Je veux que ce soit une vue en lecture seule de ces données, donc tout va bien.
Cependant, je voudrais régler la largeur des colonnes et ne peut pas sembler que cela fonctionne ...
ont essayé de évidente: créer TableStyle
, créant par exemple de style colonne de zone de texte par colonne, en ajoutant à la TableStyle
et la définition SomethingDataGrid.TableStyle
au style de table résultant. (Ceci est de la mémoire, ou je montrerais aussi le code exact que j'utilise.Si nécessaire, je peux ajouter cela à la question quelque part plus tard aujourd'hui.)
Rien ne change cependant. Je soupçonne que cela a quelque chose à voir avec le MappingName
sur l'objet TableStyle
; tous les exemples que j'ai pu trouver hier soir semblent être pour la liaison de données un DataSet
au DataGrid
et le réglage MappingName
au nom de table correct dans le DataSet
. Sinon, le style de table ne fera pas ce que vous attendez, quel est le comportement que je vois. Question: Est-ce que je cherche au bon endroit pour une solution à mon problème, et si oui, que dois-je définir TableStyle.MappingName
à lors de la liaison à un List<T>
pour montrer les propriétés de T
...?
(Essayé de vérifier les éventuels doublons, mais n'a pas pu trouver les correspondances exactes S'il vous plaît me corriger si je retourne être faux là..)
L'utilisation d'un TableStyle.MappingName = BindingSource.GetListName (null) a fonctionné correctement. – peSHIr