2011-01-27 6 views
2

私が探しているものに例を挙げて簡単に説明します。DataGridView C#

は私がemployeeName、salaryAmountとcurrencyNameを表示する必要があるのDataGridView dgResultを持つクラスEmployee私のフォームで

public class Employee 
{ 
    int empId; 
    string empName; 
    Currency salaryCurrency; 
    string address; 
    decimal salaryAmnt; 
} 
public class Currency 
{ 
    string currencyCode; 
    string currencyName; 
    int numberOfDecimals; 
    .... 
    .... 
} 
public class Employees : Collection<Employee> 
{ 
    public Employees GetEmployees(); 
} 

を持っていると言います。 (通貨クラス内)。通貨クラス内でプロパティを参照する方法のように、

1)私が直面しています課題は次のとおりです。

は、私は2つの質問があります。私はcurrencyNameをしたい。

2)DataGridViewでこれらの3つの列のみを表示する方法。私がしたことは、GetEmployees関数から返されたEmployeesのコレクションにData Grid Viewのデータソースを割り当てることです。

dgResult.DatSource = new Employees().GetEmployees(); 

私はWindowsアプリケーションで作業しています。

答えて

0

私が考えることができる最も単純な解決策は、Presenterに必要な情報が正確に含まれたEmployeeDataのコレクションを提供することです。

1

私はいつもこのソリューションを使用するが、私は選択肢があるかどうかを知りたい:

class Employee 
{ 

    public Currency Currency 
    { 
    get 
    { 
     return m_Currency; 
     } 
    } 

    public string CurrencyName 
    { 
    get 
     { 
     return this.Currency.Name; 
     } 
    } 
} 

あなたが、私はそのことができ、過去にグリッドを使用していたCurrencyName

にグリッド列を結合します表示メンバーを「Currency.Name」とします。私はこれをDataGridViewで動作させることはありませんでしたが、誰かがそれを行う方法を言うことができる場合は私に教えてください!

public class EmployeeView { 
    private readonly Employee e; 
    public EmployeeView(Employee e) { this.e = e; } 
    public int Id {get {return e.empId; }} 
    public string Name {get {return e.empName; }} 
    public string Currency {get {return e.salaryCurrency.currencyName; }} 
    // ... 
} 

そして、それらのコレクションを構築:あなたは自動的に列を生成し、私のようなクラスを実装する傾向があり、各列

+0

カラムを非表示にするには、カラムを非表示にするプロパティの前に '[Browsable(false)]'を置くこともできます。 – Blorgbeard

+0

@Blorgbeard - nice :) – WraithNath

1

を指定しないことにGridViewを設定する必要がある唯一の3つの列を表示するように

DGVで使用するDGVを編集可能にする場合は、セッターを割り当てることもできます。