Windows Forms DataGridView Denetiminde Sanal Mod

Sanal mod ile denetim ile özel veri önbelleği arasındaki DataGridView etkileşimi yönetebilirsiniz. Sanal modu uygulamak için özelliğini true olarak ayarlayın VirtualMode ve bu konuda açıklanan olaylardan birini veya daha fazlasını işleyebilir. Genellikle en azından CellValueNeeded olayı işlersiniz ve bu da denetimin veri önbelleğindeki değerleri aramasını sağlar.

Bağlı Mod ve Sanal Mod

Sanal mod yalnızca bağlı modu eklemeniz veya değiştirmeniz gerektiğinde gereklidir. İlişkili modda özelliğini ayarlarsınız DataSource ve denetim belirtilen kaynaktan verileri otomatik olarak yükler ve kullanıcı değişikliklerini ona geri gönderir. İlişkili sütunlardan hangilerinin görüntüleneceğini denetleyebilirsiniz ve veri kaynağının kendisi genellikle sıralama gibi işlemleri işler.

İlişkili Modun Desteklenmesi

İlişkili sütunlarla birlikte ilişkisiz sütunları görüntüleyerek bağlama modunu tamamlayabilirsiniz. Buna bazen "karma mod" adı verilir ve hesaplanan değerler veya kullanıcı arabirimi (UI) denetimleri gibi öğeleri görüntülemek için kullanışlıdır.

İlişkisiz sütunlar veri kaynağının dışında olduğundan, veri kaynağının sıralama işlemleri tarafından yoksayılır. Bu nedenle, karma modda sıralamayı etkinleştirdiğinizde, ilişkisiz verileri yerel önbellekte yönetmeniz ve denetimin DataGridView onunla etkileşim kurmasına izin vermek için sanal mod uygulamanız gerekir.

İlişkisiz sütunlardaki değerleri korumak için sanal modu kullanma hakkında daha fazla bilgi için özellik ve System.Windows.Forms.DataGridViewComboBoxColumn sınıf başvurusu konularındaki örneklere DataGridViewCheckBoxColumn.ThreeState bakın.

İlişkili Modu Değiştirme

Bağlı mod performans gereksinimlerinizi karşılamıyorsa, sanal mod olay işleyicileri aracılığıyla özel önbellekteki tüm verilerinizi yönetebilirsiniz. Örneğin, en iyi performans için gereken kadar ağlı veritabanından yalnızca veri alan tam zamanında veri yükleme mekanizması uygulamak için sanal modu kullanabilirsiniz. Bu senaryo, yavaş bir ağ bağlantısı üzerinden veya sınırlı miktarda RAM veya depolama alanına sahip istemci makinelerinde büyük miktarda veriyle çalışırken özellikle yararlıdır.

Sanal modu tam zamanında bir senaryoda kullanma hakkında daha fazla bilgi için bkz . Windows Forms DataGridView Denetiminde Tam Zamanında Veri Yükleme ile Sanal Modu Uygulama.

Sanal Mod Olayları

Verileriniz salt okunursa, CellValueNeeded işlemeniz gereken tek olay olay olabilir. Ek sanal mod olayları, kullanıcı düzenlemeleri, satır ekleme ve silme ve satır düzeyi işlemler gibi belirli işlevleri etkinleştirmenize olanak tanır.

Bazı standart DataGridView olaylar (örneğin, kullanıcılar satır eklediğinde veya sildiğinde ya da hücre değerleri düzenlendiğinde, ayrıştırıldığında, doğrulandığında veya biçimlendirildiğinde gerçekleşen olaylar gibi), sanal modda da yararlıdır. Ayrıca, araç ipucu metni, hücre ve satır hata metni, hücre ve satır kısayolu menü verileri ve satır yüksekliği verileri gibi normalde bağlı bir veri kaynağında depolanmayan değerleri korumanıza olanak sağlayan olayları da işleyebilirsiniz.

Okuma/yazma verilerini satır düzeyi işleme kapsamıyla yönetmek için sanal mod uygulama hakkında daha fazla bilgi için bkz . İzlenecek Yol: Windows Forms DataGridView Denetiminde Sanal Modu Uygulama.

Hücre düzeyinde işleme kapsamına sahip sanal mod uygulayan bir örnek için özellik başvurusu konusuna VirtualMode bakın.

Aşağıdaki olaylar yalnızca VirtualMode özelliği olarak trueayarlandığında gerçekleşir.

Olay Tanım
CellValueNeeded Denetim tarafından, görüntülenmek üzere veri önbelleğinden bir hücre değeri almak için kullanılır. Bu olay yalnızca ilişkisiz sütunlardaki hücreler için gerçekleşir.
CellValuePushed Denetim tarafından bir hücrenin kullanıcı girişini veri önbelleğine işlemek için kullanılır. Bu olay yalnızca ilişkisiz sütunlardaki hücreler için gerçekleşir.

Geçerli değerin denetimde UpdateCellValue görüntülendiğinden emin olmak ve geçerli durumdaki otomatik boyutlandırma modlarını uygulamak için bir olay işleyicisi CellValuePushed dışında önbelleğe alınmış bir değeri değiştirirken yöntemini çağırın.
NewRowNeeded Denetim tarafından veri önbelleğinde yeni bir satıra ihtiyaç olduğunu belirtmek için kullanılır.
RowDirtyStateNeeded Bir satırda kaydedilmemiş değişiklikler olup olmadığını belirlemek için denetim tarafından kullanılır.
CancelRowEdit Bir satırın önbelleğe alınmış değerlerine geri döndürülmesi gerektiğini belirtmek için denetim tarafından kullanılır.

Aşağıdaki olaylar sanal modda kullanışlıdır, ancak özellik ayarından VirtualMode bağımsız olarak kullanılabilir.

Ekinlikler Tanım
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Denetim tarafından satırların ne zaman silindiğini veya eklendiğini belirtmek için kullanılır ve veri önbelleğini uygun şekilde güncelleştirmenizi sağlar.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Denetim tarafından görüntüleme için hücre değerlerini biçimlendirmek ve kullanıcı girişini ayrıştırmak ve doğrulamak için kullanılır.
CellToolTipTextNeeded Özellik ayarlandığında veya VirtualModetrueözelliği olduğunda ToolTip hücre metnini DataSource almak için denetim tarafından kullanılır.

Hücre Aracı İpuçları yalnızca özellik değeri olduğunda ShowCellToolTipstruegörüntülenir.
CellErrorTextNeeded

RowErrorTextNeeded
Özellik ayarlandığında veya VirtualModetrueözelliği olduğunda hücre veya satır hata metnini DataSource almak için denetim tarafından kullanılır.

Geçerli değerin UpdateCellErrorText denetimde UpdateRowErrorText görüntülendiğinden emin olmak için hücre veya satır hata metnini değiştirdiğinizde yöntemini veya yöntemini çağırın.

ve özellik değerleri olduğunda ShowCellErrors hücre ve ShowRowErrors satır hatası glifleri truegörüntülenir.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Denetim özelliği ayarlandığında veya özelliği trueolduğunda bir hücreyi veya VirtualMode satırı ContextMenuStrip almak için denetim DataSource tarafından kullanılır.
RowHeightInfoNeeded

RowHeightInfoPushed
Denetim tarafından veri önbelleğinde satır yüksekliği bilgilerini almak veya depolamak için kullanılır. Geçerli değerin denetimin UpdateRowHeightInfo görüntüsünde kullanıldığından emin olmak için, önbelleğe alınmış satır yüksekliği bilgilerini bir RowHeightInfoPushed olay işleyicisi dışında değiştirirken yöntemini çağırın.

Sanal Modda En İyi Yöntemler

Büyük miktarda veriyle verimli bir şekilde çalışmak için sanal modu uyguluyorsanız, denetimin kendisiyle verimli bir şekilde çalıştığından DataGridView da emin olmak istersiniz. Hücre stillerinin verimli kullanımı, otomatik boyutlandırma, seçimler ve satır paylaşımı hakkında daha fazla bilgi için bkz . Windows Forms DataGridView Denetimini Ölçeklendirmeye Yönelik En İyi Yöntemler.

Ayrıca bkz.