2011-03-01 15 views
7

Bir Windows Form üzerinde bir veri kaynağı (veri bağlama) tarafından doldurulmuş kayıtlarla bir DataGridView denetimi var. Her kayıt bir veri nesnesi sunar.Bir özellik değiştiğinde DataGridView denetimi en üst düzeye kaydırır

Tüm satırlar görüntülenmiyor: örneğin yalnızca ilk 10. Böylece kullanıcı başka kayıtları görmek için aşağı doğru ilerleyebilir. Bu konuda özel bir şey yok.

Ama bir kullanıcı, sıranın nesnenin bir veri özelliği değişiyor kaydırma sonra bir satır tıklar ve bu DataGridViewand yeniler zaman - (belki bütün DataGridView yenileniyor) datagrid üstüne o "kaydırır". Bu arzu edilmez.

Bir kayıt güncellemesi sırasında mevcut kaydırma konumunu nasıl koruyabilirim?

cevap

7

DataGridView ürününün FirstDisplayedScrollingRowIndex özelliğini kullanabilirsiniz.

DGV'nizde görüntülenen ilk satırın dizinini alır/ayarlar.

böyle kullanın: sort veya DGV'nin satır ekleme/kaldırma (sen belki iyisin güncellenmesi söyledin) pek doğru olmadığını

 int rowIndex = dataGridView.FirstDisplayedScrollingRowIndex; 

     // Refresh your DGV. 

     dataGridView.FirstDisplayedScrollingRowIndex = rowIndex; 

Tabii bu işe yaramaz.

+0

Merhaba Jay. Bu çalışıyor. Bahşiş için teşekkürler. – robertpnl

+0

Aynı problem vardı. DataSource'umdaki AcceptChanges() 'ın çağrısı olduğunu anladım. Bu yüzden aramadan önce FirstDisplayedScrollingRowIndex değerini kaydedip daha sonra geri yükledim. – JonP

İlgili konular