2012-03-16 22 views
0

私は、DataGridを含む.NET Compact Framework 3.5アプリケーションで作業しています。私はデザイナを使用してBindingSourceを作成し、バインディングソースをDataGridのソースとして追加しました。ソースオブジェクトタイプのすべての適切なプロパティの列が自動的に作成されましたが、すべてのプロパティを表示したくありません。DataGridに表示される列を選択する方法

表示する列と非表示する列を指定する方法を教えてください。私は、(コードとデザイナーの両方で)DataGridのTableStylesプロパティで遊んでみましたが、何の効果もないようです。

+0

これはDataGridViewコントロール用ですか? – jp2code

+0

いいえ、.NET CF 3.5 DataGrid。 –

答えて

1

それを実演しました。私は右のInitializeComponent()後、フォームのコンストラクタで次のコード行を追加する必要がありました:

myDataGrid.TableStyles[0].MappingName = myBindingSource.GetListName(null); 

その後、私は私が喜ばとして表示列を変更するために、DataGridのTableStylesプロパティを変更することができました。

3

DataGridコントロールのTableStylesコレクションが指定された時点で空であり、DataGridTableStyleコレクションが追加されるまで、そのままになっています。

プロパティの正しい値を設定するための提案を使用して、DataGridに必要なパブリックフィールドのみを含む新しいDataGridTableStyleオブジェクトを作成して追加して、目的の結果を達成しました。

// Create a DataGridTableStyle to hold all the columns to be displayed in the DataGrid 
DataGridTableStyle myTableStyle = new DataGridTableStyle(); 
myTableStyle.MappingName = myBindingSource.GetListName(null); // This is the magic line 
myTableStyle.GridColumnStyles.Clear(); 

// Add some DataGridColumnStyles 
DataGridTextBoxColumn columnRowId = new DataGridTextBoxColumn(); 
columnRowId.MappingName = "idx"; //This must match the name of the public property 
ColumnRowId.HeaderText = "Record"; 
tableStyleReportsSummary.GridColumnStyles.Add(columnRowId); 

// Add the table style to the DataGrid 
myDataGrid.TableStyles.Clear(); 
myDataGrid.TableStyles.Add(myTableStyle); 
関連する問題