2009-07-20 16 views
24

datagridviewからパブリックプロパティを隠す属性が必要であると思います。しかし、私はそれを見つけることができません。c#datagridviewのプロパティをデータソースで隠す

+1

はあなたの要件を満たすには次のリンクを使用することができます。 http://stackoverflow.com/questions/6960739/how-to-hide-column-of-datagridview-when-using-custom -datasource – user1547592

答えて

56

あなた自身が...列を追加しないでくださいあなたはしたくない列を追加する場合。

あなたがAutoCreateColumns、その後、有効にした場合:それは、クラスベースのモデルであれば、

  • をあなたは
  • をしたいか、列の.Visible
  • falseに設定していないプロパティに[Browsable(false)]を追加したり、後で望ましくない列を削除するだけです。
+0

別のオプションは、AutoGeneratingColumnハンドラでDataGridAutoGeneratingColumnEventArgs.Cancelをtrueに設定することです。 – Jeevaka

+2

はい、BrowsableAttribute!それは私が一日中探してきたものです。ありがとう。 – Szybki

+0

@ Szybki IIRCは、私が欲しいものを見つけた唯一の方法は、リフレクタをグリッドから「PropertyDescriptor」まで、「PropertyInfo」まで見ていたことです。それは明らかではない; p –

0

あなたの質問から、私はd内に特定の「列」を表示したくないと思いますatagridview?その場合は、Columnsプロパティを使用して、グリッドにアタッチするために使用するデータソースにある自動的に作成された列を追加および削除します。

DataGridViewでは、既定で、基になるデータソースオブジェクトのすべてのパブリックプロパティの列が作成されます。だから、

public class MyClass 
{ 
    private string _name; 

    public string Name 
    { 
     get{ return _name; } 
     set { _name = value; } 
    } 

    public string TestProperty 
    { 
     { get { return "Sample"; } 
    } 
} 

... 
[inside some form that contains your DataGridView class] 

MyClass c = new MyClass(); 

// setting the data source will generate a column for "Name" and "TestProperty" 
dataGridView1.DataSource = c; 

// to remove specific columns from the DataGridView 
// dataGridView1.Columns.Remove("TestProperty")