Używanie wiersza dla nowych rekordów w formancie DataGridView formularzy systemu Windows

Jeśli używasz elementu DataGridView do edytowania danych w aplikacji, często chcesz dać użytkownikom możliwość dodawania nowych wierszy danych do magazynu danych. Kontrolka DataGridView obsługuje tę funkcję, udostępniając wiersz dla nowych rekordów, który jest zawsze wyświetlany jako ostatni wiersz. Jest ona oznaczona gwiazdką (*) symbolem w nagłówku wiersza. W poniższych sekcjach omówiono niektóre kwestie, które należy wziąć pod uwagę podczas programowania z wierszem dla nowych rekordów włączonych.

Wyświetlanie wiersza dla nowych rekordów

AllowUserToAddRows Użyj właściwości , aby wskazać, czy wiersz dla nowych rekordów jest wyświetlany. Wartość domyślna tej właściwości to true.

W przypadku sprawy powiązanej z danymi wiersz dla nowych rekordów będzie wyświetlany, jeśli AllowUserToAddRows właściwość kontrolki i IBindingList.AllowNew właściwość źródła danych to .true Jeśli którykolwiek z tych elementów, false wiersz nie zostanie wyświetlony.

Wypełnianie wiersza dla nowych rekordów przy użyciu danych domyślnych

Gdy użytkownik wybierze wiersz dla nowych rekordów jako bieżący wiersz, kontrolka DataGridViewDefaultValuesNeeded zgłasza zdarzenie.

To zdarzenie zapewnia dostęp do nowego DataGridViewRow i umożliwia wypełnienie nowego wiersza danymi domyślnymi. Aby uzyskać więcej informacji, zobacz How to: Specify Default Values for New Rows in the Windows Forms DataGridView Control (Instrukcje: określanie wartości domyślnych dla nowych wierszy w kontrolce DataGridView formularzy systemu Windows)

Kolekcja wierszy

Wiersz dla nowych rekordów znajduje się w DataGridView kolekcji kontrolki Rows , ale zachowuje się inaczej pod dwoma względami:

  • Nie można programowo usunąć wiersza dla nowych rekordów z Rows kolekcji. Jeśli zostanie podjęta próba, zostanie zwrócona wartość .InvalidOperationException Użytkownik nie może również usunąć wiersza dla nowych rekordów. Metoda DataGridViewRowCollection.Clear nie usuwa tego wiersza z kolekcji Rows .

  • Nie można dodać wiersza po wierszu dla nowych rekordów. Jeśli zostanie podjęta próba, zostanie zgłoszony element InvalidOperationException . W rezultacie wiersz dla nowych rekordów jest zawsze ostatnim wierszem w kontrolce DataGridView . Metody, które DataGridViewRowCollection dodają wiersze —Add , AddCopyi AddCopies— wszystkie metody wstawiania wywołań wewnętrznie, gdy wiersz dla nowych rekordów jest obecny.

Dostosowywanie wizualne wiersza dla nowych rekordów

Po utworzeniu wiersza dla nowych rekordów jest on oparty na wierszu określonym przez RowTemplate właściwość . Wszystkie style komórek, które nie są określone dla tego wiersza, są dziedziczone z innych właściwości. Aby uzyskać więcej informacji na temat dziedziczenia stylu komórek, zobacz Style komórek w kontrolce DataGridView formularzy systemu Windows.

Początkowe wartości wyświetlane przez komórki w wierszu dla nowych rekordów są pobierane z właściwości każdej komórki DefaultNewRowValue . W przypadku komórek typu DataGridViewImageCellta właściwość zwraca obraz zastępczy. W przeciwnym razie ta właściwość zwraca wartość null. Tę właściwość można zastąpić, aby zwrócić wartość niestandardową. Jednak te wartości początkowe można zastąpić przez DefaultValuesNeeded program obsługi zdarzeń, gdy fokus wprowadza wiersz dla nowych rekordów.

Standardowe ikony nagłówka tego wiersza, które są strzałką lub gwiazdką, nie są widoczne publicznie. Jeśli chcesz dostosować ikony, musisz utworzyć klasę niestandardową DataGridViewRowHeaderCell .

Standardowe ikony używają ForeColor właściwości DataGridViewCellStyle używanej przez komórkę nagłówka wiersza. Standardowe ikony nie są renderowane, jeśli nie ma wystarczającej ilości miejsca, aby wyświetlić je całkowicie.

Jeśli komórka nagłówka wiersza ma ustawioną wartość ciągu, a jeśli nie ma wystarczającego miejsca zarówno dla tekstu, jak i ikony, ikona zostanie porzucona jako pierwsza.

Sortowanie

W trybie niezwiązanym nowe rekordy będą zawsze dodawane na końcu DataGridView , nawet jeśli użytkownik posortował zawartość obiektu DataGridView. Użytkownik będzie musiał ponownie zastosować sortowanie, aby posortować wiersz do poprawnej pozycji; to zachowanie jest podobne do tego kontrolki ListView .

W trybach powiązanych z danymi i trybami wirtualnymi zachowanie wstawiania po zastosowaniu sortowania będzie zależeć od implementacji modelu danych. W przypadku ADO.NET wiersz jest natychmiast posortowany w prawidłowej pozycji.

Inne notatki w wierszu dla nowych rekordów

Nie można ustawić Visible właściwości tego wiersza na false. Jeśli zostanie podjęta próba, zostanie zgłoszony element InvalidOperationException .

Wiersz dla nowych rekordów jest zawsze tworzony w stanie niezaznaczonym.

Tryb wirtualny

W przypadku implementowania trybu wirtualnego należy śledzić, kiedy wiersz dla nowych rekordów jest potrzebny w modelu danych i kiedy wycofać dodanie wiersza. Dokładna implementacja tej funkcji zależy od implementacji modelu danych i semantyki transakcji, na przykład od tego, czy zakres zatwierdzenia znajduje się na poziomie komórki lub wiersza. Aby uzyskać więcej informacji, zobacz Tryb wirtualny w kontrolce DataGridView formularzy systemu Windows.

Zobacz też