Поделиться через


Использование строки элемента управления DataGridView, предназначенной для ввода новых данных, в Windows Forms

При использовании элемента управления DataGridView для редактирования данных в приложении зачастую бывает необходимо предоставить пользователям возможность добавления новых строк данных в хранилище данных. Эта функциональная возможность обеспечивается элементом управления DataGridView путем предоставления строки для добавления новых записей, которая всегда находится в самом конце сетки. Она всегда помечается звездочкой (*) в заголовке строки. В последующих разделах рассматривается ряд особенностей, которые следует учитывать при программировании, если строка для добавления новых записей включена.

Отображение строки для добавления новых записей

Свойство AllowUserToAddRows указывает, должна ли отображаться строка для добавления новых записей. По умолчанию для этого свойства устанавливается значение true.

В случае использования связывания данных строка для добавления новых записей будет отображаться, только если свойство AllowUserToAddRows элемента управления и свойство IBindingList.AllowNew источника данных оба установлены в значение true. Если любое из них имеет значение false, строка не отображается.

Заполнение строки для добавления новых записей данными по умолчанию

При выборе пользователем строки для добавления новых записей в качестве текущей элемент управления DataGridView вызывает событие DefaultValuesNeeded.

Это событие обеспечивает доступ к новой строке DataGridViewRow и позволяет заполнить ее данными по умолчанию. Дополнительные сведения см. в разделе Практическое руководство. Определение значений по умолчанию для новых строк элемента управления DataGridView в Windows Forms.

Коллекция строк

Строка для добавления новых записей включается в коллекцию Rows элемента управления DataGridView, но имеет два отличия.

  • Строку для добавления новых записей нельзя удалить из коллекции Rows программным путем. При попытке ее удаления возникает исключение InvalidOperationException. Строка для добавления новых записей также не может быть удалена пользователем. Метод DataGridViewRowCollection.Clear не удаляет эту строку из коллекции Rows.

  • После строки для добавления новых записей нельзя добавить другую строку. При попытке попытке добавления строки возникает исключение InvalidOperationException. Таким образом, строка для добавления новых записей всегда является последней строкой элемента управления DataGridView. При наличии строки для добавления новых записей методы DataGridViewRowCollection, используемые для добавления строк — Add, AddCopy и AddCopies, — выполняют внутреннюю вставку строк.

Настройка внешнего вида строки для добавления новых записей

При создании строки для добавления новых записей ее внешний вид соответствует строке, указанной в свойстве RowTemplate. Стили ячеек, которые не определены для этой строки, наследуются от других свойств. Дополнительные сведения о наследовании стилей ячеек см. в разделе Стили ячеек элемента управления DataGridView в Windows Forms.

Исходные значения, отображаемые в ячейках строки для добавления новых записей, берутся из свойства DefaultNewRowValue каждой ячейки. Для ячеек типа DataGridViewImageCell это свойство возвращает изображение-заполнитель. В противном случае это свойство возвращает значение null. Чтобы это свойство возвращало пользовательское значение, его можно переопределить. Однако исходные значения могут заменяться обработчиком событий DefaultValuesNeeded, когда строка для добавления новых записей получает фокус.

Стандартные значки для заголовка этой строки, а именно стрелка или звездочка, не предоставлены для открытого доступа. При необходимости настроить значки потребуется создать пользовательский класс DataGridViewRowHeaderCell.

Стандартные значки используют свойство ForeColor свойства DataGridViewCellStyle, используемого ячейкой заголовка строки. Стандартные значки не отображаются, если для их полного отображения недостаточно места.

Если для ячейки заголовка строки задано строковое значение, но для одновременного отображения текста и значка недостаточно места, в первую очередь не будет отображаться значок.

Сортировка

В несвязанном режиме новые записи всегда добавляются в конец элемента управления DataGridView, даже если пользователь произвел сортировку содержимого DataGridView. Чтобы строка заняла правильную позицию, пользователю потребуется произвести сортировку повторно, так же как и в случае с элементом управления ListView.

В связанном и виртуальном режимах результат вставки при применении сортировки будет зависеть от реализованной модели данных. В случае с ADO.NET строка автоматически занимает правильную позицию.

Примечания к использованию строк для добавления новых записей

Свойству Visible этой строки нельзя присвоить значение false. При попытке присвоения этого значения возникает исключение InvalidOperationException.

При создании строки для добавления новых записей она всегда находится в невыделенном состоянии.

Виртуальный режим

При реализации виртуального режима необходимо отслеживать потребность в строке для добавления новых записей в соответствии с моделью данных, а также потребность в откате добавления строки. Конкретная реализация данных функциональных возможностей зависит от реализации модели данных и соответствующей семантики транзакций, например, используется ли область фиксации на уровне ячеек или на уровне строк. Дополнительные сведения см. в разделе Виртуальный режим элемента управления DataGridView в Windows Forms.

См. также

Задачи

Практическое руководство. Определение значений по умолчанию для новых строк элемента управления DataGridView в Windows Forms

Ссылки

DataGridView

DataGridView.DefaultValuesNeeded

Другие ресурсы

Ввод данных с помощью элемента управления DataGridView в Windows Forms