25 Haziran 2012 Pazartesi

DevExpress XtraGrid - Master/Detail


private DataTable dtMusteri()
{
    DataTable dt = new DataTable();

    dt.Columns.Add("MusteriID", typeof(int));
    dt.Columns.Add("Musteri", typeof(string));

    DataRow dr = dt.NewRow();
    dr[0] = 1; dr[1] = "Ahmet Taş";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 2; dr[1] = "Mehmet Kaş";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 3; dr[1] = "Veli Yaş";
    dt.Rows.Add(dr);


    return dt;
}

private DataTable dtUrun()
{
    DataTable dt = new DataTable();

    dt.Columns.Add("MusteriID", typeof(int));
    dt.Columns.Add("Urun", typeof(string));

    DataRow dr = dt.NewRow();
    //Ahmet Taş için Ürünler
    dr[0] = 1; dr[1] = "Bilgisayar";
    dt.Rows.Add(dr);  
  
    dr = dt.NewRow();
    dr[0] = 1; dr[1] = "TV";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 1; dr[1] = "Mouse";
    dt.Rows.Add(dr);

    //Mehmet Kaş için Ürünler
    dr = dt.NewRow();
    dr[0] = 2; dr[1] = "Kalem";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 2; dr[1] = "Kağıt";
    dt.Rows.Add(dr);

    //Veli Yaş için Ürünler
    dr = dt.NewRow();
    dr[0] = 3; dr[1] = "Çay";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 3; dr[1] = "Şeker";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 3; dr[1] = "Un";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = 3; dr[1] = "Tuz";
    dt.Rows.Add(dr);


    return dt;
}

private void Form1_Load(object sender, EventArgs e)
{
    DataSet ds = new DataSet();
    ds.Tables.Add(dtMusteri());
    ds.Tables.Add(dtUrun());
    

    ds.Relations.Add("Detay", ds.Tables[0].Columns["MusteriID"], ds.Tables[1].Columns["MusteriID"]);

    gridControl1.DataSource = ds.Tables[0];

}


5 yorum:

  1. Uzun zamandır çözmeye çalıştığım bi konuyu, çok kısa ve anlaşılır bi şeklide açıklamışsınız TEBRİKLER

    YanıtlaSil
  2. merhaba çok faydalı bir paylaşım olmuş
    ama şöyle bir sorunum var detay griddde yeni bir kayıt girildiğinde veya değiştirildiğinde bu eventları nasıl yakalacağız,
    teşekkürler

    YanıtlaSil
  3. Merhaba Murat Bey, Detay tablosundaki kolonlardan birini gizlemek istiyorum , bunu nasıl yaparım acaba ?

    YanıtlaSil
  4. Hocam Merhaba Konu İçin Çok Teşekkür Ederim. Bir Konuda yardımınızı rica ediyorum. Master-Detail özelliğini sipariş bazlı MRP çalıştıracağı bir projemde kullanacağım. Sipariş Aralığı vereceği için bir iki farklı siparişte de aynı ürün olabilir. Ürünün reçetesini getirdiğim tabloda da eşleştirmeyi

    ds.Relations.Add("Detay", ds.Tables[0].Columns["Stok Kodu"], ds.Tables[1].Columns["Stok Kodu"] )
    Yaptığım için çift satırda da aynı Stok kodu döndüğü için sanırım hata veriyor. ds.Relations.Add komutu için iki alan değilde dört alanı eşitleme yapabiliyormuyuz ?

    YanıtlaSil