Используйте getGeneratedKeys()
, если Ваш драйвер JDBC поддерживает его. Вы не хотите небрежно обращаться с попыткой получить ключ сами после вставки. Если бы Ваш драйвер не поддерживает getGeneratedKeys()
затем, я получил бы следующее значение от ключа перед вставкой.
Попробуйте свойство DataGridView.RowHeadersVisible.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowheadersvisible.aspx
Ответ, похоже, обрабатывает событие DataGridView.CellFormatting. Почему установка значения в другом месте не работает, я не понимаю, но я уверен, что причина есть. Я добавил следующий обработчик событий, и все в порядке:
private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView gridView = sender as DataGridView;
if (null != gridView)
{
gridView.Rows[e.RowIndex].HeaderCell.Value = gridView.Rows[e.RowIndex].Cells[0].Value;
Console.WriteLine("GridViewCell: " + gridView.Rows[e.RowIndex].Cells[0].Value);
}
}
Если вы поместите этот код в конструктор, он не будет работать. Переместите код в событие формы Load
, и он должен работать нормально. Распространенная проблема с Windows.Forms и C # - использование неправильной инициализации в конструкторе. Многие элементы управления не создаются полностью до завершения работы конструктора. (Я забыл почему, но я считаю, что это потому, что дескриптор еще не создан.) Многие «обходные пути» можно избежать, если вы инициализируете событие Load
в соответствии с рекомендациями Microsoft.