我有一个在SQL Server 2008上运行的几个表的数据库,我正在编程一个Windows应用程序W/.NET 3.5,使用提供的查询类服务器。我遇到了每个表格中包含一个看似持久的“空白”行的问题。“幽灵”行,SQL Server 2008 + .NET Windows编程
例如,我将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
一样。但是,检查rows->Count
时,DataGridView报告2行。现在
,如果我加载SQL Server Management Studio中,看看我的表,我出现以下观点:
然而,该行不能被删除/移除,如果我编辑一行中单元格的任何内容,它只是添加一个新的整个NULL行。我认为这是为了某种我不知道的目的而设计的,但我也挂上了这个问题。
如果我试图从DataGridView中显式删除该行,它将返回一个“未提交的新行无法删除”,并且我无法在填充SqlDataAdapter后从我的表中删除该行,因为它不报告它在那里。
这个问题不仅对应用程序的美观,而且对功能造成严重破坏,因为我无法在绑定的DataGridView上使用不存在的数据运行例程。
我希望我能够简洁地传达我的问题。谢谢。
谢谢,没想到要修改那个属性。被挂在额外的桌子上。然而,事后看来很有道理。 –