Définir la largeur des colonnes dans une grille de données à l'aide de Compact Framework
Je suis en train de définir la largeur des colonnes dans mon datagrid. J'utilise Compact Framework 2.0 et C#
J'ai essayé ceci, mais il me donne un "hors de les obligations" message d'erreur:
foreach (DataGridColumnStyle vColumnStyle in dataGrid1.TableStyles[0].GridColumnStyles)
{
vColumnStyle.Width = 100;
}
Voici le code pour le remplissage de mon datagrid avec la datatable (seulement échoue lorsque j'essaie de définir la largeur des colonnes):
void FillData()
{
//1
//Open connection
string conString = "Data Source=\\Program Files\\smartdeviceproject2\\repartocrack.sdf";
using (SqlCeConnection c = new SqlCeConnection(conString))
{
c.Open();
//2
//Create new DataAdapter
using (SqlCeDataAdapter a = new SqlCeDataAdapter(
"SELECT codbultocomp, nombre, estado FROM envios INNER JOIN tiendas ON envios.codigodestino = tiendas.codigodestino", c))
{
//3
//Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t);
//4
//Render data onto the screen
foreach (DataGridColumnStyle vColumnStyle in dataGrid1.TableStyles[0].GridColumnStyles)
{
vColumnStyle.Width = 100;
}
dataGrid1.DataSource = t;
}
}
}
OriginalL'auteur rfc1484 | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Essayez ce code:
agréable à entendre 🙂
Je que c'est un "vieux" de la question, mais vous demandez si le réglage "Auto" est une option?
a fonctionné pour moi 🙂 merci
OriginalL'auteur Reniuz
DataGrid est maintenant obsolète, mais j'ai rencontré le même problème lors de la modification d'un code existant, donc je vais poster ma solution.
Le problème est que la grille de données a un champ privé appelé myGridTable qui est maintenant le courant
DataGridTableStyle
. Un courantDataGridTableStyle
, même si leTableStyles
collection est vide, auquel cas il indique un défautDataGridTableStyle
qui est également privé/interne.Depuis DataGrid est de toute façon obsolète et ne sera pas changé, j'ai décidé de suffit d'utiliser la Réflexion pour accéder aux champs privés. Ils doivent avoir été publique de toute façon, et en les rendant privé était une mauvaise décision de conception de l'OMI.
L'avantage de travailler avec les styles en cours directement est que vous n'avez pas besoin de détruire et recréer la table des styles de simplement modifier les largeurs, et il fonctionne sans problème inattendu à chaque fois.
J'ai créé quelques méthodes d'extension pour le faire:
m_tabstyActive
OriginalL'auteur sashoalm
J'ai passé une bonne partie de 2 jours à chercher la réponse ci-dessus. Merci pour la grande des solutions fournies. Voici le code vb, avec une personnalisation des largeurs de colonne par colonne:
OriginalL'auteur ThePilotGuy