DataGrid Denetimine Genel Bakış (Windows Forms)

Not

DataGridViewDenetim yerini alır ve denetime işlevsellik ekler DataGrid ; ancak, isterseniz DataGrid Denetim hem geri uyumluluk hem de gelecekteki kullanım için korunur. daha fazla bilgi için bkz. Windows Forms DataGridView ve DataGrid denetimleri arasındaki farklar.

Windows Forms DataGrid denetim verileri bir dizi satır ve sütunda görüntüler. En basit durum, kılavuzun hiçbir ilişki içermeyen tek bir tabloyla bir veri kaynağına bağlanması durumunda olur. Bu durumda, veriler bir elektronik tabloda olduğu gibi basit satırlarda ve sütunlarda görüntülenir. verileri diğer denetimlere bağlama hakkında daha fazla bilgi için bkz. veri bağlama ve Windows Forms.

DataGridBirden çok ilişkili tablo içeren verilere bağlıysa ve kılavuzda gezinti etkinse, kılavuz her satırda Genişleticileri görüntülenecektir. Bir genişleticiyle, Kullanıcı üst tablodan bir alt tabloya geçiş yapabilir. Bir düğüme tıkladığınızda alt tablo görüntülenir ve geri düğmesine tıklandığında özgün üst tablo görüntülenir. Bu şekilde, kılavuz, tablolar arasındaki hiyerarşik ilişkileri görüntüler.

Aşağıdaki ekran görüntüsünde, birden çok tablo içeren verilere yönelik bir DataGrid gösterilmektedir:

A WinForms app showing a DataGrid bound to data with multiple tables.

, DataGrid Bir veri kümesi için Kullanıcı arabirimi, ilişkili tablolar arasında gezinti ve zengin biçimlendirme ve düzen özellikleri sağlayabilir.

verilerin görüntülenmesi ve işlenmesi ayrı işlevlerdir: denetim kullanıcı arabirimini işler, ancak veri güncelleştirmeleri Windows Forms veri bağlama mimarisi ve .NET Framework veri sağlayıcıları tarafından işlenir. Bu nedenle, aynı veri kaynağıyla bağlantılı birden çok denetim eşitlenmiş olarak kalır.

Not

Visual Basic 6,0 ' de DataGrid denetimine alışkın değilseniz, Windows Forms denetiminde bazı önemli farklılıklar bulacaksınız DataGrid .

Kılavuz bir öğesine bağlandığında DataSet , sütunlar ve satırlar otomatik olarak oluşturulur, biçimlendirilir ve doldurulur. daha fazla bilgi için bkz. veri bağlama ve Windows Forms. Denetimin üretilmesini izleyerek DataGrid , gereksinimlerinize bağlı olarak sütunları ve satırları ekleyebilir, silebilir, yeniden düzenleyebilir ve biçimlendirebilirsiniz.

Verileri denetime bağlama

DataGridDenetimin çalışması için, DataSourceDataMember tasarım zamanında ve çalışma zamanında yöntemi kullanılarak bir veri kaynağına bağlanması gerekir SetDataBinding . Bu bağlama, DataGrid veya gibi bir örneklenmiş veri kaynağı nesnesine işaret eder DataSetDataTable . DataGridDenetimde, verilerde gerçekleştirilen eylemlerin sonuçları gösterilir. Verilere özgü çoğu eylem, veri kaynağı aracılığıyla değil, aracılığıyla gerçekleştirilmez DataGrid .

Bağlantılı veri kümesindeki veriler herhangi bir mekanizmaya göre güncelleştirilirse, DataGrid Denetim değişiklikleri yansıtır. Veri kılavuzunda ve Tablo stillerinde ve sütun stillerinde ReadOnly özelliği olarak ayarlandıysa false , veri kümesindeki veriler denetim aracılığıyla güncelleştirilebilen olabilir DataGrid .

Tek seferde yalnızca bir tablo gösterilebilir DataGrid . Tablolar arasında üst-alt ilişkisi tanımlanmışsa, Kullanıcı denetimde görüntülenecek tabloyu seçmek için ilgili tablolar arasında hareket edebilir DataGrid . bir DataGrid denetimi ADO.NET veri kaynağına tasarım zamanında veya çalışma zamanında bağlama hakkında bilgi için bkz. DataGrid.

Şunlar için geçerli veri kaynakları DataGrid :

Kaynağınız bir veri kümesi ise, veri kümesi formdaki bir nesne veya bir XML Web hizmeti tarafından forma geçirilmiş bir nesne olabilir. Türü belirtilmiş ya da türsüz veri kümelerine bağlanabilirsiniz.

Ayrıca DataGrid , yapıdaki nesneler gibi bir dizideki nesneler ortak özellikleri kullanıma sunduğundan, bir denetimi ek yapılara bağlayabilirsiniz. Izgara, yapıdaki öğelerin tüm ortak özelliklerini görüntüler. Örneğin, DataGrid denetimi bir müşteri nesneleri dizisine bağlarsanız, kılavuz bu müşteri nesnelerinin tüm ortak özelliklerini görüntüler. Bazı örneklerde bu, yapıya bağlayabilseniz de, sonuçta elde edilen bağlı yapının pratik bir uygulama olmayabilir. Örneğin, bir tamsayı dizisine bağlayabilirsiniz, ancak Integer veri türü ortak bir özelliği desteklemediğinden, kılavuz herhangi bir veri görüntüleyemez.

Öğeleri ortak özellikleri açığa çıkarmak için aşağıdaki yapılara bağlayabilirsiniz:

  • Arabirimi uygulayan herhangi bir bileşen IList . Bu, tek boyutlu dizileri içerir.

  • Arabirimi uygulayan herhangi bir bileşen IListSource .

  • Arabirimi uygulayan herhangi bir bileşen IBindingList .

olası veri kaynakları hakkında daha fazla bilgi için bkz. Windows Forms tarafından desteklenen veri kaynakları.

Izgara görüntüsü

Denetimin yaygın kullanımı bir DataGrid veri kümesinden tek bir veri tablosunu görüntülemektir. Ancak, denetim, ilgili tablolar dahil olmak üzere birden çok tabloyu göstermek için de kullanılabilir. Kılavuzun görünümü veri kaynağına göre otomatik olarak ayarlanır. Aşağıdaki tabloda, çeşitli yapılandırmalarda nelerin gösterileceği gösterilmektedir.

Veri kümesinin içeriği Ne görüntülenir
Tek tablo. Tablo bir kılavuzda görüntülenir.
Birden çok tablo. Izgara, kullanıcıların görüntülemek istedikleri tabloyu bulmak için gezinebilecekleri bir ağaç görünümü gösterebilir.
Birden çok ilişkili tablo. Izgara, tabloları seçmek için bir ağaç görünümü görüntüleyebilir veya Kılavuzun üst tabloyu göstermesini belirtebilirsiniz. Üst tablodaki kayıtlar, kullanıcıların ilgili alt satırlara gitmesini sağlar.

Not

Bir veri kümesindeki tablolar, ile ilgilidir DataRelation . Ayrıca bkz. veri kümeleri arasında Ilişki oluşturma.

DataGridDenetim bir tabloyu görüntülerken ve AllowSorting özelliği olarak ayarlandığında true , veriler sütun başlıklarına tıklanarak yeniden oluşturulabilir. Kullanıcı ayrıca satır ekleyebilir ve hücreleri düzenleyebilir.

Bir tablo kümesi arasındaki ilişkiler, bir üst/alt gezinti yapısı kullanılarak kullanıcılara görüntülenir. Üst tablolar en yüksek veri düzeyidir ve alt tablolar üst tablolardaki tek listelerden türetilmiş veri tablolarıdır. Genişletmeleri, alt tablo içeren her bir üst satırda görüntülenir. Bir genişleticiye tıklamak, alt tablolara yönelik Web benzeri bağlantıların bir listesini oluşturur. Kullanıcı bir bağlantı seçtiğinde alt tablo görüntülenir. Üst satırları göster/gizle simgesini () tıklatmak, Show/hide parent rows icon üst tabloyla ilgili bilgileri gizler veya Kullanıcı daha önce gizlenmişse yeniden görünür hale gelir. Kullanıcı daha önce görüntülenen tabloya geri dönmek için geri düğmesine tıklayabilirsiniz.

Sütunlar ve satırlar

, DataGridDataGridTableStyle Denetimin özelliğinde yer alan nesneler koleksiyonundan oluşur DataGridTableStyles . Tablo stili DataGridColumnStyle , öğesinin özelliğinde yer alan bir nesne koleksiyonu içerebilir GridColumnStylesDataGridTableStyle . TableStylesGridColumnStylesTableStyles penceresi aracılığıyla erişilen koleksiyon düzenleyicilerini kullanarak ve özelliklerini düzenleyebilirsiniz.

DataGridTableStyleDenetimiyle ilişkili herhangi birine DataGrid aracılığıyla erişilebilir GridTableStylesCollection . , GridTableStylesCollection Koleksiyon Düzenleyicisi ile tasarımcıda düzenlenebilir DataGridTableStyle veya denetimin özelliği aracılığıyla programlı bir şekilde düzenlenebilirler DataGridTableStyles .

Aşağıdaki çizimde DataGrid denetimine eklenen nesneler gösterilmektedir:

Diagram that shows objects included in the DataGrid control.

Tablo stilleri ve sütun stilleri, DataTableDataColumnMappingName özellikleri uygun ve özelliklere ayarlayarak nesneler ve nesnelerle eşitlenir TableNameColumnName . Geçerli bir DataGridTableStyle veri kaynağına bağlanan bir denetime hiçbir sütun stili eklendiğinde DataGrid ve MappingName Bu tablo stilinin özelliği geçerli bir TableName özelliğe ayarlandığında, DataGridColumnStyle Bu tablo stili için bir nesne koleksiyonu oluşturulur. DataColumnÖğesinin koleksiyonunda bulunan her biri için ColumnsDataTable öğesine karşılık gelen DataGridColumnStyle öğesine eklenir GridColumnStylesCollection . GridColumnStylesCollection öğesinin özelliği aracılığıyla erişilir GridColumnStylesDataGridTableStyle . İçindeki or yöntemi kullanılarak kılavuzdan sütunlar eklenebilir veya silinebilir AddRemoveGridColumnStylesCollection . daha fazla bilgi için bkz. nasıl yapılır: Windows Forms datagrid denetimine tablo ve sütun ekleme ve nasıl yapılır: Windows Forms datagrid denetimindeki sütunları silme veya gizleme.

Sütun türleri koleksiyonu, DataGridColumnStyle sınıfı zengin biçimlendirme ve Düzenle özellikleri ile genişletir. Tüm sütun türleri DataGridColumnStyle taban sınıftan devralınır. Oluşturulan sınıf, DataType temel aldığı öğesinin özelliğine bağlıdır DataColumnDataGridColumn . Örneğin, DataColumnDataType özelliği olarak ayarlanmış olan bir, Boolean ile ilişkilendirilecektir DataGridBoolColumn . Aşağıdaki tabloda bu sütun türlerinin her biri açıklanmaktadır.

Sütun türü Açıklama
DataGridTextBoxColumn Verileri, biçimli veya biçimlendirilmemiş dizeler olarak kabul eder ve görüntüler. Düzenlemenin özellikleri, verileri basit bir şekilde düzenlemekte oldukları gibidir TextBox . Öğesinden devralır DataGridColumnStyle .
DataGridBoolColumn true, Ve null değerlerini kabul eder ve görüntüler false . 'den DataGridColumnStyle devralıyor.

Bir sütunun sağ kenarına çift tıklarsanız, sütunun tam açıklamalı alt yazısını ve en geniş girişini görüntülemek için sütunu yeniden boyutlandırılır.

Tablo Stilleri ve Sütun Stilleri

Denetimin varsayılan biçimini belirler oluşturmaz, veri kılavuzunda belirli tablolar görüntülendiğinde kullanılacak DataGrid renkleri özelleştirebilirsiniz.

Bu, sınıfının örnekleri oluşturarak DataGridTableStyle elde edilir. Tablo stilleri, denetimin varsayılan biçimlendirmelerinden ayrı olarak belirli tabloların DataGrid biçimlendirmesini belirtir. Her tabloda aynı anda yalnızca bir tablo stili tanımlanmış olabilir.

Bazen belirli bir sütunun belirli bir veri tablosuna sahip olan diğer sütunlardan farklı bir görünüme sahip olmak istemeniz gerekir. özelliğini kullanarak özelleştirilmiş bir sütun stilleri kümesi GridColumnStyles oluşturabilirsiniz.

Sütun stilleri, tablo stillerinin veri tablolarına ilişkin olduğu gibi bir veri kümesinde yer alan sütunlarla da ilişkili olur. Her tablonun aynı anda yalnızca bir tablo stili tanımlansa da her sütunda belirli bir tablo stilinde yalnızca bir sütun stili tanımlanmış olabilir. Bu ilişki, sütunun özelliğinde MappingName tanımlanır.

Sütun stilleri eklenmeden bir tablo stili oluşturduysanız, Visual Studio çalışma zamanında form ve kılavuz oluşturulduğunda varsayılan sütun stillerini eklersiniz. Ancak, bir tablo stili oluşturduysanız ve buna herhangi bir sütun stili eklediy Visual Studio herhangi bir sütun stili oluşturmazsınız. Ayrıca, sütun stillerini tanımlamanız ve bunları eşleme adıyla ataarak istediğiniz sütunların kılavuzda görünmesini istemelisiniz.

Hangi sütunların veri kılavuzuna dahil olduğunu belirtmek için sütun stili atadığınız ve sütunlara sütun stili atanmamış olduğundan, veri kümesine kılavuzda görüntülenmeen veri sütunlarını ekleyebilirsiniz. Ancak, veri sütunu veri kümesine dahil olduğundan, görüntülenmeen verileri program aracılığıyla düzenleyebilirsiniz.

Not

Genel olarak, tablo stilleri koleksiyonuna tablo stilleri eklemeden önce sütun stilleri oluşturun ve bunları sütun stilleri koleksiyonuna ekleyin. Koleksiyona boş bir tablo stili eklerken sütun stilleri sizin için otomatik olarak oluşturulur. Sonuç olarak, sütun stilleri koleksiyonuna yinelenen değerler içeren yeni sütun stilleri eklemeye MappingName çalışsanız bir özel durum oluşturur.

Bazen, birçok sütun arasında yalnızca bir sütunda ince ayar yapmak gerekir; Örneğin, veri kümesi 50 sütun içerir ve yalnızca 49 sütuna tıklayın. Bu durumda, istediğiniz 49 sütunun her birini program aracılığıyla eklemek yerine 50 sütunun hepsini içeri aktararak program aracılığıyla kaldırmak daha kolaydır.

Biçimlendirme

Denetime uygulanan biçimlendirme; kenarlık stilleri, kılavuz çizgisi stilleri, yazı tipleri, açıklamalı alt yazı özellikleri, veri hizalama ve satırlar arasındaki DataGrid alternatif arka plan renklerini içerir. Daha fazla bilgi için, bkz. How to: Format the Windows Forms DataGrid Control.

etkinlik

, ve gibi yaygın denetim olaylarının yanı sıra, denetim kılavuz MouseDown içinde düzenleme ve gezinti ile ilişkili olayları EnterScrollDataGrid destekler. özelliği, CurrentCell hangi hücrenin seçileceklerini belirler. Kullanıcı CurrentCellChanged yeni bir hücreye gidilende olay ortaya çıkar. Kullanıcı üst/alt ilişkiler aracılığıyla yeni bir tabloya gidinca Navigate olay ortaya çıkar. Kullanıcı bir alt tabloyu görüntülerken kullanıcı geri düğmesine tıkladığında ve üst satırları göster/gizle simgesine tıkıldığında olay BackButtonClickShowParentDetailsButtonClick ortaya çıkar.

Ayrıca bkz.