Windows Forms DataGridView Denetiminde Sütun Sıralama Modları
DataGridView sütunlarının üç sıralama modu vardır. Her sütunun sıralama modu, sütunun özelliği aracılığıyla belirtilir ve bu mod aşağıdaki SortMode numaralama DataGridViewColumnSortMode değerlerinden biri olarak ayarlanabilmektedir.
DataGridViewColumnSortMode Değer |
Açıklama |
|---|---|
| Automatic | Metin kutusu sütunları için varsayılandır. Sütun üst bilgileri seçim için kullanılmadıkça, sütun başlığına tıklarsanız bu sütuna göre otomatik olarak sıralama yapılır ve sıralama DataGridView düzenine işaret eden bir yazı görüntülenir. |
| NotSortable | Metin olmayan kutu sütunları için varsayılandır. Bu sütunu program aracılığıyla sıraabilirsiniz; ancak, sıralamaya yönelik değildir, bu nedenle sıralama ifadeleri için alan ayrılmış değildir. |
| Programmatic | Bu sütunu program aracılığıyla sıralayabilirsiniz ve boşluk, sıralama yazıları için ayrılmıştır. |
Anlamlı bir şekilde sıralanmış değerler içeriyorsa, varsayılan olarak değerine sahip NotSortable olan bir sütunun sıralama modunu değiştirmek iyi olabilir. Örneğin, öğe durumları temsil eden sayılar içeren bir veritabanı sütununu varsa, veritabanı sütununa bir görüntü sütunu bağarak bu sayıları karşılık gelen simgeler olarak görüntüebilirsiniz. Ardından sayısal hücre değerlerini olay için bir işleyicide görüntü görüntüleme değerleri olarak DataGridView.CellFormatting değiştirebilirsiniz. Bu durumda özelliğinin olarak SortMode ayarlanmış Automatic ve kullanıcılarının sütunu sıralaması sağlanmış olur. Otomatik sıralama, sayılara karşılık gelen durumların doğal bir sırası yoksa bile kullanıcılarının aynı durumlara sahip öğeleri gruplamalarına olanak sağlar. Onay kutusu sütunları, otomatik sıralamanın aynı durumdaki öğeleri gruplamada yararlı olduğu başka bir örnektir.
Ayarlardan bağımsız olarak program aracılığıyla herhangi bir DataGridView sütundaki veya birden çok sütundaki değerlere göre SortMode sıralayabilirsiniz. Programlı sıralama, sıralama için kendi kullanıcı arabiriminizi (UI) sağlamak veya özel sıralama uygulamak istediğiniz zaman kullanışlıdır. Örneğin, sütun üst bilgisi seçimini etkinleştirmek için seçim modunu ayarlıyorken kendi sıralama kullanıcı DataGridView arabiriminizi sağlamak yararlı olur. Bu durumda, sütun üst bilgileri sıralama için kullanılamaz ancak yine de üst bilgilerin uygun sıralama yazılarını görüntülemelerini istediğinizden özelliğini olarak SortModeProgrammatic ayarlayabilirsiniz.
Programlı sıralama moduna ayarlanmış sütunlar otomatik olarak bir sıralama yazısı görüntülemez. Bu sütunlar için özelliğini ayarerek yazıyı kendiniz görüntülemeniz DataGridViewColumnHeaderCell.SortGlyphDirection gerekir. Özel sıralamada esneklik sağlamak için bu gereklidir. Örneğin, birden çok sütuna göre sıralarsanız, birden çok sıralama yazımı görüntülemek veya sıralama DataGridView yazımı göstermek istemeyebilirsiniz.
Program aracılığıyla herhangi bir sütuna göre sıralamanız mümkün olsa da, düğme sütunları gibi bazı sütunlar anlamlı bir şekilde DataGridView sıralanmış değerler içerene sahip değildir. Bu sütunlar için özellik ayarı, sıralama için hiçbir zaman kullanılmay olacağını gösterir, bu nedenle sıralama yazısı için üst bilgide yer rezervasyona SortModeNotSortable gerek yoktur.
sıralanmış olduğunda, ve özelliklerinin değerlerini kontrol ederek hem sıralama sütununu hem de DataGridView sıralama SortedColumn yı tespit SortOrder edersiniz. Bu değerler, özel bir sıralama işlemi sonrasında anlamlı değildir. Özel sıralama hakkında daha fazla bilgi için bu konunun ilerleyen kısımlarında yer alan Özel Sıralama bölümüne bakın.
Hem bağlı hem de bağlı olmayan sütunları içeren bir denetim DataGridView sıralanmışsa, gelen sütunlarda yer alan değerler otomatik olarak korunamaz. Bu değerleri korumak için özelliğini olarak ayarp ve ve VirtualMode olaylarını true işerek sanal modu CellValueNeededCellValuePushed uygulamanız gerekir. Daha fazla bilgi için, bkz. How to: Implement Virtual Mode in the Windows Forms DataGridView Control. Bağlı modda sınırsız sütunlara göre sıralama desteklenmiyor.
Programlı Sıralama
Bir yöntemi DataGridView çağırarak program aracılığıyla Sort sıraabilirsiniz.
yönteminin Sort(DataGridViewColumn,ListSortDirection) aşırı Sort yüklemesi parametre olarak bir ve DataGridViewColumn bir ListSortDirection numaralama değeri alır. Bu aşırı yükleme, anlamlı bir şekilde sıralandırabileceğiniz ancak otomatik sıralama için yapılandırmak istemeyebilirsiniz değerleri içeren sütunlara göre sıralama yapmak için kullanışlıdır. Bu aşırı yüklemeyi çağırarak özellik değerine sahip bir sütun iletip , ve özellikleri otomatik olarak ayarlanır ve sütun üst bilgisinde uygun sıralama SortModeDataGridViewColumnSortMode.AutomaticSortedColumnSortOrder yazısını görüntüler.
Not
Denetimin özelliği ayar tarafından bir dış veri kaynağına bağlı DataGridViewDataSource olduğunda, yöntem aşırı Sort(DataGridViewColumn,ListSortDirection) yüklemesi, sınırsız sütunlarda işe yaramamaktadır. Ayrıca, özelliği VirtualMode olduğunda bu aşırı yüklemeyi yalnızca bağlı sütunlar için true çağırabilirsiniz. Bir sütunun veriye bağlı olup olmadığını belirlemek için özellik IsDataBound değerini kontrol edin. Sınırsız sütunların sınır modunda sıralanmış olması desteklenmiyor.
Özel Sıralama
yönteminin DataGridView aşırı Sort(IComparer) yüklemesi kullanarak veya Sort olayı işerek SortCompare özelleştirebilirsiniz.
Yöntem Sort(IComparer) aşırı yüklemesi, arabirimini parametre olarak uygulayan bir IComparer sınıfın örneğini alır. Bu aşırı yükleme, özel sıralama sağlamak istediğiniz zaman kullanışlıdır; Örneğin, bir sütundaki değerler doğal bir sıralama düzenine sahip değilken veya doğal sıralama düzeni uygun olduğunda. Bu durumda otomatik sıralamayı kullanaabilirsiniz ancak yine de sütun üst bilgilerine tıklayarak kullanıcılarınızı sıralamak istiyor olabilirsiniz. Seçim için sütun üst bilgileri kullanmazsanız, bu aşırı ColumnHeaderMouseClick yüklemeyi olay için bir işleyicide çağırabileceğiniz.
Not
Yöntem Sort(IComparer) aşırı yüklemesi yalnızca denetim DataGridView bir dış veri kaynağına bağlı değilken ve özellik değeri olduğunda VirtualModefalse çalışır. Dış veri kaynağına bağlı sütunlar için sıralamayı özelleştirmek için veri kaynağı tarafından sağlanan sıralama işlemlerini kullanmalıdır. Sanal modda, sınırsız sütunlar için kendi sıralama işlemlerinizi sağlamelisiniz.
Yöntem aşırı Sort(IComparer) yüklemesi kullanmak için arabirimini uygulayan kendi sınıfınızı oluşturmanız IComparer gerekir. Bu arabirim, yöntemi aşırı yükleme çağrıldı olduğunda nesneleri giriş olarak IComparer.CompareDataGridViewDataGridViewRow geçiren yöntemini uygulamak Sort(IComparer) için sınıfınızı gerektirir. Bu şekilde, herhangi bir sütundaki değerlere göre doğru satır sıralamayı hesapebilirsiniz.
Yöntem Sort(IComparer) aşırı yüklemesi ve özelliklerini ayarlamaz, bu nedenle özelliği her zaman sıralama özelliğini görüntü olarak SortedColumnSortOrderDataGridViewColumnHeaderCell.SortGlyphDirection ayarlayabilirsiniz.
Yöntem aşırı yüklemesi Sort(IComparer) alternatif olarak, olay için bir işleyici uygulayarak özel sıralama SortCompare sebilirsiniz. Bu olay, kullanıcılar otomatik sıralama için yapılandırılmış sütunların üst bilgilerine tıklaıldığında veya yönteminin aşırı Sort(DataGridViewColumn,ListSortDirection) yüklemesi çağırıldığında Sort oluşur. Olay, denetimde her satır çifti için gerçekleşir ve bu da doğru sıralarını hesaplamaya olanak sağlar.
Not
Olay, SortCompare özellik ayar DataSource olduğunda veya özellik değeri VirtualMode olduğunda true oluşmaz.
Ayrıca bkz.
- DataGridView
- DataGridView.Sort
- DataGridView.SortedColumn
- DataGridView.SortOrder
- DataGridViewColumn.SortMode
- DataGridViewColumnHeaderCell.SortGlyphDirection
- Windows Forms DataGridView Denetimindeki Verileri Sıralama
- Nasıl yapılır: Windows Forms DataGridView Denetiminde Sütunlar için Sıralama Modlarını Ayarlama
- Nasıl yapılır: Windows Forms DataGridView Denetiminde Sıralamayı Özelleştirme