2009-02-17 4 views
2

Je suis un débutant dans le développement de Windows Mobile et j'ai trouvé que lorsque je définis la largeur en utilisant un DataGridTextBoxColumn, cela n'affecte pas la taille de la colonne DataGrid. Voici mon code:DataGrid Width n'a aucun effet sur Windows Mobile. C#

 DataGridTableStyle tableStyle = new DataGridTableStyle(); 
     tableStyle.MappingName = "MainStyle"; 

     DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn(); 
     tbcName.Width = 120; 
     tbcName.MappingName = "Name"; 
     tbcName.HeaderText = "Name"; 
     tableStyle.GridColumnStyles.Add(tbcName); 

     DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn(); 
     tbcValue.Width = 200; 
     tbcValue.MappingName = "Value"; 
     tbcValue.HeaderText = "Value"; 
     tableStyle.GridColumnStyles.Add(tbcValue); 

     // dgUserAttributes is defined as a System.Windows.Forms.DataGrid 
     dgUserAttributes.TableStyles.Clear(); 
     dgUserAttributes.TableStyles.Add(tableStyle);    

Toutes les idées?

Répondre

1

Comme Henk Holterman dit que vous devez mapper le DataGridTableStyle au nom du DataTable lié au DataGrid l'. Comme alternative, vous pouvez définir le MappingName de chaque DataGridTextBoxColumn au nom de la colonne du DataColumn dans la limite DataTable.

En supposant que vous avez ajouté un DataGrid nommé dgUserAttributes à un formulaire nommé Form1 dans le concepteur de formulaire, vous pouvez tester la façon dont la propriété DataGridTextBoxColumnlargeur modifie la largeur de la colonne dans la affiché DataGrid en utilisant le code ci-dessous.

Vérifiez également que vous avez pas encore défini une valeur à dgUserAttributesTableStyles collection au moment de la conception qui pourraient être les valeurs PRÉPONDÉRANTS que vous avez définies par programmation.

public Form1() 
    { 
     InitializeComponent(); 

     //Create In-Memory DataTable 
     DataTable myTable = new DataTable(); 

     // Add DataColumns to the DataTable. 
     DataColumn myNameColumn = new DataColumn("Name"); 
     myNameColumn.DataType = System.Type.GetType("System.String"); 
     myNameColumn.DefaultValue = "default string"; 
     myTable.Columns.Add(myNameColumn); 
     DataColumn myValueColumn = new DataColumn("Value"); 
     myValueColumn.DataType = System.Type.GetType("System.String"); 
     myValueColumn.DefaultValue = "default string"; 
     myTable.Columns.Add(myValueColumn); 

     //Bind DataTable to dataGrid1 
     dgUserAttributes.DataSource = myTable; 

     DataGridTableStyle tableStyle = new DataGridTableStyle(); 
     //tableStyle.MappingName = "MainStyle"; 
     DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn(); 
     tbcName.Width = 12; 
     tbcName.MappingName = "Name"; 
     tbcName.HeaderText = "Name"; 
     tableStyle.GridColumnStyles.Add(tbcName); 
     DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn(); 
     tbcValue.Width = 300; 
     tbcValue.MappingName = "Value"; 
     tbcValue.HeaderText = "Value"; 
     tableStyle.GridColumnStyles.Add(tbcValue); 
     // dgUserAttributes is defined as a System.Windows.Forms.DataGrid 
     dgUserAttributes.TableStyles.Clear();   
     dgUserAttributes.TableStyles.Add(tableStyle);   
    } 
+0

Dans votre exemple, s'il y avait 10 colonnes, auriez-vous à ajouter 10 colonnes ou seulement celles qui vous intéressent? –

Questions connexes