Forum

DataGridView'de Ben...
 
Bildirimler
Hepsini Temizle

[Çözüldü] DataGridView'de Benzersiz Kayıtları Listeleme.

4 Yazılar
3 Üyeler
2 Likes
1,824 Görüntüleme
(@alpi)
Gönderiler: 9
Active Member
Konu başlatıcı
 

Merhaba.

Vb.Net ile bir Datatableyi DataGridViewe aktarıyorum fakat eğer bir sütunda benzer kayıtlar varsa onları sadece bir kere göstermeyi nasıl sağlarım.

Örneğin StokKodu "001" olan kayıtlar DataGridViewde sadece bir satırda görünsün.

Aşağıdaki liste

e8

 Aşağıdaki gibi görünsün

e10

Ve ayrıca aşağıdaki gibi de görünmesi de sağlanabilir mi?

e9
 
Gönderildi : 14/06/2020 13:42

(@serkanates)
Gönderiler: 1275
Üye
 

İstediğiniz şekilde yapabilirsiniz ancak bunu datagridview özelliklerinde bir kaç parametreyi düzelteyim kendi yapsın istiyorsanız bu mümkün değil. devexpress vb. bir framework kullanmalısınız, yada gelen veri setinizi geçici bir tabloya istediğiniz şekilde düzenleyip bu tabloyu gride bağlamalısınız (bknz: linq)

İyi çalışmalar.

 
Gönderildi : 15/06/2020 00:17
Alp Selim and Alp Selim reacted

(@alpi)
Gönderiler: 9
Active Member
Konu başlatıcı
 

Merhaba Serkan bey.

İlginiz için teşekkürler.

Yapmak istediğim işlem eğer DataTable yada BindingSource ile oluyorsa zaten işimi görür.

Linq herhalde işimi görecek ama benzer bir örnek bulamadım.

Ayrıca Vb.Net dili ile çalışıyorum.

 

 
Gönderildi : 15/06/2020 13:07

(@eravse)
Gönderiler: 1753
Üye
 
Gönderen: @alpi

Merhaba.

Vb.Net ile bir Datatableyi DataGridViewe aktarıyorum fakat eğer bir sütunda benzer kayıtlar varsa onları sadece bir kere göstermeyi nasıl sağlarım.

Örneğin StokKodu "001" olan kayıtlar DataGridViewde sadece bir satırda görünsün.

Aşağıdaki liste

e8

 Aşağıdaki gibi görünsün

e10

Ve ayrıca aşağıdaki gibi de görünmesi de sağlanabilir mi?

e9

Eğer SQL yada linq ile yapmayacaksanız GW bunun için pivot table a döner aşağıdaki örnekteki gibi guruplama yapabilirsiniz. Fakat bu da tam istediğinizi vermeyecek. 

 

protected override void OnCellPainting(DataGridViewCellPaintingEventArgs args)
{
  base.OnCellPainting(args);

  args.AdvancedBorderStyle.Bottom =
    DataGridViewAdvancedCellBorderStyle.None;

  // Ignore column and row headers and first row
  if (args.RowIndex < 1 || args.ColumnIndex < 0)
    return;

  if (IsRepeatedCellValue(args.RowIndex, args.ColumnIndex))
  {
    args.AdvancedBorderStyle.Top =
      DataGridViewAdvancedCellBorderStyle.None;
  }
  else
  {
    args.AdvancedBorderStyle.Top = AdvancedCellBorderStyle.Top;
  }
}

Sizin tam olarak gw için bind etmeden önce şu şekilde bir kod la dt yi manipüle etmeniz lazım

dt = dt.AsEnumerable()
       .GroupBy(r => new {Col1 = r["Col1"], Col2 = r["Col2"]})
       .Select(g => g.OrderBy(r => r["PK"]).First())
       .CopyToDataTable();


saygılar

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 16/06/2020 23:13

Paylaş: