Share via


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 SortMode özelliği aracılığıyla belirtilir ve bu özellik aşağıdaki DataGridViewColumnSortMode numaralandırma değerlerinden birine ayarlanabilir.

DataGridViewColumnSortMode Değer Tanım
Automatic Metin kutusu sütunları için varsayılandır. Seçim için sütun üst bilgileri kullanılmadığı sürece, sütun üst bilgisine tıklandığında sütun otomatik olarak bu sütuna DataGridView göre sıralanır ve sıralama düzenini gösteren bir karakter görüntülenir.
NotSortable Metin kutusu olmayan sütunlar için varsayılandır. Bu sütunu program aracılığıyla sıralayabilirsiniz; ancak, sıralama için tasarlanmamıştır, bu nedenle sıralama karakteri için hiçbir alan ayrılmaz.
Programmatic Bu sütunu program aracılığıyla sıralayabilirsiniz ve alan sıralama karakteri için ayrılmıştır.

Anlamlı bir şekilde sıralanabilen değerler içeriyorsa, varsayılan NotSortable olarak sütun için sıralama modunu değiştirmek isteyebilirsiniz. Örneğin, öğe durumlarını temsil eden sayılar içeren bir veritabanı sütununa sahipseniz, bir görüntü sütununu veritabanı sütununa bağlayarak bu sayıları ilgili simgeler olarak görüntüleyebilirsiniz. Ardından sayısal hücre değerlerini olay işleyicisindeki görüntü görüntüleme değerlerine DataGridView.CellFormatting dönüştürebilirsiniz. Bu durumda özelliğini olarak SortModeAutomatic ayarlamak, kullanıcılarınızın sütunu sıralamasını sağlar. Otomatik sıralama, sayılara karşılık gelen durumların doğal bir sırası olmasa bile kullanıcılarınızın aynı duruma sahip öğeleri gruplandırmasını sağlar. Onay kutusu sütunları, otomatik sıralamanın aynı durumdaki öğeleri gruplandırmada 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 SortMode göre sıralayabilirsiniz. Programlı sıralama, sıralama için kendi kullanıcı arabiriminizi (UI) sağlamak istediğinizde veya özel sıralama uygulamak istediğinizde kullanışlıdır. Kendi sıralama kullanıcı arabiriminizi sağlamak, örneğin sütun üst bilgisi seçimini etkinleştirmek için seçim modunu ayarladığınızda DataGridView kullanışlıdır. Bu durumda, sütun başlıkları sıralama için kullanılamasa da, yine de üst bilgilerin uygun sıralama karakteri görüntülemesini istersiniz, böylece özelliğini olarak ProgrammaticayarlayabilirsinizSortMode.

Programlı sıralama moduna ayarlanan sütunlar otomatik olarak bir sıralama karakteri görüntülemez. Bu sütunlar için, özelliğini ayarlayarak DataGridViewColumnHeaderCell.SortGlyphDirection karakteri kendiniz görüntülemeniz gerekir. Özel sıralamada esneklik istiyorsanız bu gereklidir. Örneğin, öğesini birden çok sütuna DataGridView göre sıralarsanız, birden çok sıralama karakteri görüntülemek veya sıralama karakteri görüntülememek isteyebilirsiniz.

Bir sütunu program aracılığıyla herhangi bir DataGridView sütuna göre sıralayabilirsiniz ancak düğme sütunları gibi bazı sütunlar anlamlı bir şekilde sıralanabilir değerler içermeyebilir. Bu sütunlar için özelliği SortMode ayarı NotSortable , sıralama için hiçbir zaman kullanılmayacağını gösterir, bu nedenle sıralama karakteri için üst bilgide yer ayırmaya gerek yoktur.

bir DataGridView sıralandığında ve özelliklerinin değerlerini SortedColumnSortOrder denetleyerek hem sıralama sütununu hem de sıralama düzenini belirleyebilirsiniz. Bu değerler özel bir sıralama işleminden sonra anlamlı değildir. Özel sıralama hakkında daha fazla bilgi için bu konunun devamında yer alan Özel Sıralama bölümüne bakın.

Hem ilişkili hem de ilişkisiz sütunları içeren bir DataGridView denetim sıralandığında, ilişkisiz sütunlardaki değerler otomatik olarak korunamaz. Bu değerleri korumak için özelliğini true olarak ayarlayıp VirtualMode ve CellValuePushed olaylarını işleyerek CellValueNeeded sanal modu uygulamanız gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: Windows Forms DataGridView Denetiminde Sanal Mod Uygulama. İlişkili modda ilişkisiz sütunlara göre sıralama desteklenmez.

Programlı Sıralama

Yöntemini çağırarak Sort program DataGridView aracılığıyla sıralayabilirsiniz.

Sort(DataGridViewColumn,ListSortDirection) yönteminin Sort aşırı yüklenmesi, parametre olarak bir DataGridViewColumn ve ListSortDirection numaralandırma değeri alır. Bu aşırı yükleme, anlamlı bir şekilde sıralanabilen ancak otomatik sıralama için yapılandırmak istemediğiniz değerlere sahip sütunlara göre sıralama yaparken kullanışlıdır. Bu aşırı yüklemeyi çağırıp özelliği değerine DataGridViewColumnSortMode.AutomaticSortedColumn sahip bir SortMode sütun geçirdiğinizde ve SortOrder özellikleri otomatik olarak ayarlanır ve sütun üst bilgisinde uygun sıralama karakteri görüntülenir.

Dekont

Denetimin DataGridView özelliği ayarlanarak DataSource bir dış veri kaynağına bağlı olması durumunda, Sort(DataGridViewColumn,ListSortDirection) yöntem aşırı yüklemesi ilişkisiz sütunlar için çalışmaz. Ayrıca, özelliği olduğunda VirtualModetruebu aşırı yüklemeyi yalnızca ilişkili sütunlar için çağırabilirsiniz. Bir sütunun veriye bağlı olup olmadığını belirlemek için özellik değerini denetleyin IsDataBound . İlişkisiz sütunların bağlı modda sıralanması desteklenmez.

Özel Sıralama

Yönteminin aşırı yüklemesini SortSort(IComparer) kullanarak veya olayı işleyerek SortCompare özelleştirebilirsinizDataGridView.

Sort(IComparer) Yöntem aşırı yüklemesi, arabirimi parametre olarak uygulayan bir sınıfın örneğini IComparer alır. Bu aşırı yükleme, özel sıralama sağlamak istediğinizde kullanışlıdır; örneğin, bir sütundaki değerlerin doğal sıralama düzeni olmadığında veya doğal sıralama düzeni uygun olmadığında. Bu durumda, otomatik sıralamayı kullanamazsınız, ancak yine de kullanıcılarınızın sütun üst bilgilerine tıklayarak sıralamasını isteyebilirsiniz. Seçim için sütun üst bilgileri kullanmıyorsanız, olay işleyicisinde ColumnHeaderMouseClick bu aşırı yüklemeyi çağırabilirsiniz.

Dekont

Sort(IComparer) Yöntem aşırı yüklemesi yalnızca DataGridView denetim bir dış veri kaynağına bağlı olmadığında ve VirtualMode özellik değeri olduğunda falseç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 kullanmanız gerekir. Sanal modda, ilişkisiz sütunlar için kendi sıralama işlemlerinizi sağlamanız gerekir.

Yöntem aşırı yüklemesini Sort(IComparer) kullanmak için arabirimini uygulayan IComparer kendi sınıfınızı oluşturmanız gerekir. Bu arabirim, sınıfınızın yöntemini uygulamasını IComparer.Compare gerektirir ve DataGridView bu yöntem aşırı yüklemesi çağrıldığında Sort(IComparer) nesneleri giriş olarak geçirirDataGridViewRow. Bununla, herhangi bir sütundaki değerlere göre doğru satır sıralamasını hesaplayabilirsiniz.

Sort(IComparer) Yöntem aşırı yüklemesi ve SortOrder özelliklerini ayarlamazSortedColumn, bu nedenle sıralama karakteri görüntülemek için her zaman özelliğini ayarlamanız DataGridViewColumnHeaderCell.SortGlyphDirection gerekir.

Yöntem aşırı yüklemesine Sort(IComparer) alternatif olarak, olay için SortCompare bir işleyici uygulayarak özel sıralama sağlayabilirsiniz. Bu olay, kullanıcılar otomatik sıralama için yapılandırılmış sütunların üst bilgilerine tıkladığında veya yönteminin Sort(DataGridViewColumn,ListSortDirection) aşırı yüklemesini Sort çağırdığınızda oluşur. Olay, denetimdeki her satır çifti için gerçekleşir ve doğru sıralarını hesaplamanıza olanak tanır.

Dekont

Özellik SortCompare ayarlandığında veya VirtualMode özellik değeri olduğunda trueolay gerçekleşmezDataSource.

Ayrıca bkz.