2017-11-15 5 views
0
public void Fill() 
    { 
     List<testowa1> lista = new List<testowa1>(); 
     var item = new testowa1() 
     { 
      ID = 1, 
      Nazwa = "Pierwszy", 
      Cena = new testowa2() 
      { 
       Cena = 32.22M 
      } 
     }; 
     lista.Add(item); 
     lista.Add(item); 
     lista.Add(item); 
     lista.Add(item); 

     dataGridView1.DataSource = lista; 
    } 

    public class testowa1 
    { 
     public int ID { get; set; } 
     public string Nazwa { get; set; } 
     public testowa2 Cena { get; set; } 
    } 
    public class testowa2 
    { 
     public decimal Cena { get; set; } 
    } 

をネストされたフィールドのフォームクラスオブジェクトの値を取得する方法:だから result of program結果である別のCLASに

を、どのように私は、データグリッドにtestowa2.Cenaの値を得ることができますか? 私は何をすべきかわかりません。私はGoogleで探していたが、何も見つかりませんでした

+0

あなたがいることを試すことができます: 'dataGridView1.DataBindを()書き;' dataGridView1.DataSource =リスタ '後、MustafaÇ[email protected]' –

+0

becouseがウェブとのDataGridViewは、()メソッドをWinFormsのデータバインドされていないされていない働いていない – FrycuBOP

答えて

0

私はあなたの質問を完全に理解できませんでした。

このようなことが欲しいですか?

var cenaValues = dataGridView1.DataSource.Items.Where(x => x.Cena != null) 
.Select(x => x.Cena.Cena).ToList(); 
+0

ありがとうございます! – FrycuBOP

+0

@FrycuBOPこれは、正しく表示されない値の問題とどのように関係していますか? "どのように私はtestowa2.Cenaの価値をデータグリッドに得ることができますか?"これは、DataGridViewから** **への**の値を取得するだけです。 –

+0

@BlakeThingstad dataGridView1.DataSource = dataGridView1.DataSource = lista.Select(x => new {x.ID、x.Nazwa、x.Cena.Cena})。ToList();ちょうどこのような。 – FrycuBOP

0

testowa1にプロパティを追加して、testowa2に保持されている小数点以下のプロパティを公開することができます。これにより、DataGridviewにその値が格納されますが、testowa2が文字列として表示される余分な列を非表示にする必要があります。

データバインディングはオブジェクトのプロパティで1レベルしか深くできないため、これはうまくいくと思います。あなたのコードでは、testowa2の小数点値を表示する代わりに、testowa2に相当する文字列を表示するだけで、小数点を取得するためにtestowa2にドリルダウンしないためです。免責事項:私は実際にデータバインディングをよく理解していないし、私の説明をバックアップするための何も見つけることができませんでした。だからこれは間違っているかもしれませんが、あなたのコードを変更してもうまくいくのです。

public class testowa1 
{ 
    public decimal CenaValue 
    { 
     get { return Cena.Cena; } 
     set { Cena.Cena = value; } 
    } 
} 

// in Fill 
var item = new testowa1() 
{ 
    ID = 1, 
    Nazwa = "Pierwszy", 
    Cena = new testowa2(), 
    CenaValue = 32.22M 
}; 

// after you added the list as the datasource 
dataGridView1.Columns["Cena"].Visible = false; 
関連する問題