gpt4 book ai didi

.net - "Ghost"行,SQL Server 2008 + .NET Windows 编程

转载 作者:行者123 更新时间:2023-12-01 02:11:10 25 4
gpt4 key购买 nike

我有一个数据库,其中有几个表在 SQL Server 2008 上运行,我正在编写一个带有 .NET 3.5 的 Windows 应用程序,使用提供的类来查询服务器。我遇到了一个问题,即每个表中都包含一个看似持久的“空白”行。

例如,我将 DataGridView 绑定(bind)到 BindingSource,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;
}

下面的网格是它产生的:

grid

如果我检查 table->Rows->Count,在适配器填满表格后,它立即生成 1,bindingSource->Count 也是如此。但是,DataGridView 在检查 rows->Count 时报告 2 行。

现在,如果我加载 SQL Server Management Studio 并查看我的表,我会看到以下 View :

grid

但是,无法删除/删除该行,如果我编辑一行中某个单元格的任何内容,它只会添加一个新的完整 NULL 行。我认为这是出于某种我不知道的目的而设计的,但我也对这个问题很困惑。

如果我尝试从 DataGridView 中显式删除该行,它会返回:“无法删除未提交的新行”,并且在用 SqlDataAdapter 填充它后我不能尝试从我的表中删除该行,因为它不会'报告它在那里。

这个问题不仅破坏了应用程序的美观,还破坏了功能,因为我无法在绑定(bind)的 DataGridView 上使用不存在的数据运行例程。

我希望我足够简洁来表达我的问题。谢谢。

最佳答案

此行用于在您的数据集中插入新记录。如果您将其留空,则它只会保持空白。如果您开始编辑它 - 它会等待编辑完成(当您将焦点设置在该行之外时)并添加具有指定字段值的新记录。

如果您想在 DataGridView 中禁用此功能,只需将属性 AllowUserToAddRows 设置为 false,如下所示:

dataGridView->AllowUserToAddRows = false;
dataGridView->DataSource = bindingSource;
...

关于.net - "Ghost"行,SQL Server 2008 + .NET Windows 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com