Я обнаружил, что это не мое решение, так как я не хотел очищать все строки в представлении данных, чтобы просто вставить их заново с одной дополнительной \ новой строкой. Мои коллекции исчисляются десятками тысяч, и вышеприведенное решение было способом замедления ....
После продолжительной игры с классом DataGridViewRow я нашел метод для NewRow.CreateCells (DataGridView, object []).
Это позволяет правильно отображать ячейки в форматах из таблицы данных.
Кажется, код вопроса в верхней части этой страницы оставил ячейки пустыми, потому что типы не совпадали, когда новая строка вставлялась в сетку данных. Использование метода CreateCells в новой строке и анализ DataGridView, в который будет вставлена строка, позволяет передавать типы ячеек в новую строку, которая, в свою очередь, фактически отображает данные на экране.
Это также позволяет вам разместить тег на каждом элементе перед добавлением новой строки в сетку данных, что было требованием для моей задачи.
Пожалуйста, посмотрите мой код ниже как пример этого .....
private void DisplayAgents()
{
dgvAgents.Rows.Clear();
foreach (Classes.Agent Agent in Classes.Collections.Agents)
{
DisplayAgent(Agent, false);
}
}
private void DisplayAgent(Classes.Agent Agent, bool Selected)
{
DataGridViewRow NewRow = new DataGridViewRow();
NewRow.Tag = Agent;
NewRow.CreateCells(dgvAgents, new string[]
{
Agent.Firstname,
Agent.Surname,
Agent.Email,
Agent.Admin.ToString(),
Agent.Active.ToString(),
});
dgvAgents.Rows.Add(NewRow);
NewRow.Selected = Selected;
}