У меня есть база данных с несколькими таблицами, работающими на SQL Server 2008, и я программирую приложение для Windows с .NET 3.5, используя классы, предоставленные для запроса к серверу. У меня возникла проблема с кажущейся стойкой «пустой» строкой, включенной в каждую таблицу.
Например, я связываю DataGridView с BindingSource, чей DataSource представляет собой таблицу, созданную SqlDataAdapter, которая подключается к моей базе данных, и я отображаю результаты в своей DataGrid. В таблице есть 1 запись:
dataGridView->DataSource = bindingSource;
bindingSource->DataSource = GetData(
"Select * From xxxx", Get_DB_String(), dataAdapter );
Где GetData определяется как:
DataTable^ GetData(
String^ sqlCommand,
String^ connectionString,
SqlDataAdapter^ adapter )
{
SqlConnection^ Connection = gcnew SqlConnection( connectionString );
SqlCommand^ command = gcnew SqlCommand( sqlCommand,Connection );
adapter->SelectCommand = command;
DataTable^ table = gcnew DataTable;
adapter->Fill(table);
return table;
}
И следующая сетка это то, что она производит:
Если я проверю table->Rows->Count
, сразу после того, как адаптер заполнит таблицу, он выдаст 1, как и bindingSource->Count
. Однако DataGridView сообщает о 2 строках при проверке rows->Count
.
Теперь, если я загружаю SQL Server Management Studio и смотрю на свою таблицу, я получаю следующее представление:
Однако строку невозможно удалить / удалить, и если я редактирую любое содержимое ячейки в строке, он просто добавляет новую целую строку NULL. Я предполагаю, что это сделано для какой-то цели, о которой я не знаю, но я также одержим этой проблемой.
Если я пытаюсь явно удалить строку из DataGridView, он возвращает: «Неизвестная новая строка не может быть удалена», и я не могу попытаться удалить строку из моей таблицы после ее заполнения SqlDataAdapter, потому что она не не сообщайте об этом как о находящемся там.
Эта проблема наносит ущерб не только эстетике приложения, но и его функциональности, потому что я не могу запустить подпрограммы в привязанном DataGridView с данными, которых не существует.
Я надеюсь, что был достаточно кратким, чтобы передать мою проблему. Спасибо.