Динамически установить значение по умолчанию DataGridViewColumn во время выполнения - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть элемент управления DataGridView, который используется для редактирования / обновления / удаления записей из одной таблицы в базе данных. Я переопределил элемент управления DataGridView, чтобы добавить следующее:

    private int employeeID;

    public int DefaultEmployeeID
    {
        get { return employeeID; }
        set { employeeID = value; }
    }

    protected override void OnUserAddedRow(DataGridViewRowEventArgs e)
    {
        e.Row.Cells[0].Value = employeeID;
        base.OnUserAddedRow(e);
    }

Когда пользователь загружает другого сотрудника из базы данных, атрибуту DefaultEmployeeID присваивается идентификатор сотрудника. Я знаю, что событие OnUserRowAdded срабатывает правильно, employeeID устанавливается на правильное значение, и я уверен, что у меня есть правильная ячейка. Тем не менее, значение по-прежнему устанавливается на 0.

Что дает? Заранее спасибо.

1 Ответ

1 голос
/ 26 апреля 2011

Ваша проблема связана с тем, что событие UserAddedRow запускается для строки шаблона (той, что в самом низу, используется для добавления новых строк в сетку) - вы устанавливаете правильное значение, но неправильноrow.

Простое решение вашей проблемы:

protected override void OnUserAddedRow(DataGridViewRowEventArgs e)
{
    // get the index for "1 before last row" - the one which you in fact edit/add
    int actualRowIndex = this.Rows.Count - 2; 
    this.Rows[actualRowIndex].Cells[0].Value = employeeID;
    base.OnUserAddedRow(e);
}

Я запустил этот простой пример, чтобы проиллюстрировать, о каких строках я говорю.Как только пользователь начинает вводить в шаблонной строке (левое изображение), он становится обычной строкой, и вставляется новая строка шаблона, и это в аргументах события (правое изображение).

Image illustrting which rows gets carried within event args

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...