2009-04-30 32 views
38

Bir sql tablosundan bağlandığım bir datagridview var, bu dv'de şu öznitelikler var: Id, Name and Price. İsim Sütunlarının SortMode'unu Otomatik olarak ayarladığımda ve bu sütunun başlığına tıkladığımda, bu dv'yi Adın ilk harfine göre sıralayabilirim, bu şekilde ürünleri ilk harflerine göre sipariş edebilirim (Akümülatör, Tekne, CocaCola, Motor vb.C# içinde dataGridView sütunlarını sırala? (Windows Form)

Sütun Adının başlığına tıklanmadan bu şeyin gerçekleşmesi için bir yol var mı. Form yüklenirken bu işi yapacak bazı kod arıyorum.

+1

cevabı: this.dataGridView1.Sort (this.dataGridView1.Columns [ "Ad"], ListSortDirection.Ascending); – AXheladini

cevap

82

"Sıralama" denilen DataGridView bir yöntem var.

+0

'daki SQL deyimindeki sözdizimi sırasına ekleyelim, sıralamada harcanan zaman hakkında ne yazıyor? yükledikten sonra SQL deyimlerini çalıştırırken sipariş vermekle ilgili daha fazla bilgi! Daha fazla zaman harcayacağını düşünüyorum. – Ahmy

+0

Evet, Ahmy haklıdır, performans açısından veritabanı tarafında sıralamak daha iyidir. Bu nedenle, doğrudan DB ile etkileşimde bulunmak için SQL kullanıyorsanız, sorgunuzun sonuna bir sipariş ekleyin. Sadece soruya cevap veriyordum. DGV'yi kod içinde sıralamanın yolu budur. – BFree

+0

Eğer AXheladini'nin buna ihtiyacı var ise, ama bu soruya UI'de ihtiyaç duymadığı için anladım. Bu yüzden zaman kazanmak istedim. AXheladini'nin çözümü bulduğu için mutluyum. – Ahmy

0

Datatable.Default.Sort özelliğini kullanın ve ardından datagridview öğesine bağlayın.

3

Veri döndürülen verileri sıralayarak SQL veritabanından döndürülen kontrol edebilir:

orderby [Name] 

veri döndürdü sipariş etme, uygulamadan SQL sorgusu çalıştırmak durumunda. Örneğin, yordamı çağıran veya SQL'i yürüten ve siparişi ölçütlerini alan bir parametre veren bir işlev oluşturun. Çünkü veriyi veritabanından döndürdüğünüzden eminseniz zaman harcayacak, ancak sipariş verildikten sonra siparişi vermeniz gerektiğini belirttiğiniz gibi, siparişi yürütmek istediğinizde, siparişi yürütmek istediğinizde sipariş veriniz. sorgu.

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending); 

Bu işlem programlı sıralamak DataGridView:

+0

Verigridview'ı otomatik olarak bağlarım, sorguyu kullanmıyorum. Veri kaynağının sorgulamasına erişmenin ve bunu düzeltmenin bir yolu var mı? – AXheladini

+0

Veritabanını sorgulayan ve veriyi buna ekleyeceğiniz SQL deyimini, u kullanımında veya DAL katmanı – Ahmy

8
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending); 
+1

Sayı dizini dize dizininden daha iyi kullanmanın, gelecekte sütun adını değiştirirseniz, dize dizinini de değiştirmeniz gerekeceğini kabul ediyorum. – 123iamking

1

Bu, bir daha basit olan :)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview; 
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC"; 
this.datagridview.datasource = dataview1;