Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据集中删除行后出现异常_C#_Datagridview_Strongly Typed Dataset - Fatal编程技术网

C# 从数据集中删除行后出现异常

C# 从数据集中删除行后出现异常,c#,datagridview,strongly-typed-dataset,C#,Datagridview,Strongly Typed Dataset,我的Basci设置: 数据集有3个数据表,没有关系; 2个数据绑定一个用于版本表,另一个用于脚本表 2个DataGridView,将数据绑定作为数据源 在一个按钮点击事件中,我得到版本datagridview中的第一个选中行,得到DataboundItem并将其转换为“VersionRow”。然后获取数据集中的行并使用Delete()-methode 这一切运行时完全没有异常,在调试中,您可以看到数据集中versionrow的状态也发生了更改。但随后,它将与DeletedRowInaccessi

我的Basci设置: 数据集有3个数据表,没有关系; 2个数据绑定一个用于版本表,另一个用于脚本表 2个DataGridView,将数据绑定作为数据源

在一个按钮点击事件中,我得到版本datagridview中的第一个选中行,得到DataboundItem并将其转换为“VersionRow”。然后获取数据集中的行并使用
Delete()-methode

这一切运行时完全没有异常,在调试中,您可以看到数据集中versionrow的状态也发生了更改。但随后,它将与DeletedRowInaccessibleException一起崩溃

单击要删除的事件:

private void VersionDel_Click(object sender, EventArgs e)
    {
        if (VersionDataGird.SelectedRows.Count > 0)
        {
            var x = (MainDB.VersionsRow)VersionDataGird.SelectedRows[0].DataBoundItem;
            mainDB.Versions.FindByID(x.ID).Delete(); 
        }

    }//after here it jumps in a generated function to get id from dataset and fails

当我在DataSet中删除该行时,我预计该行只会在DataGridView中消失。你知道我的错在哪里吗

我认为您正在获取所选行并将其从数据库中删除。但您没有更新栅格视图

删除行后,尝试删除数据网格的数据源,并在删除行后再次将数据源添加到此网格

您也可以使用适配器来代替此。这是我在网上找到的一个链接


希望有帮助

请看一看您发布的代码中的这一点,这还不足以说明您应该做什么,您的意图也不清楚,但它应该会给您一些线索。首先感谢您的回复:)我的意图是通过从基础数据表中删除这一行来删除datagridview的选定行。这也很好,但是在这之后,datagrid对datatable运行一个请求,并失败,出现上述错误。请求直接在delete方法完成后发生。代码中不清楚mainDB.Versions.FindByID(x.ID.delete();做请记住,您使用的是断开连接的数据集。它填充了填充时的数据,您对其执行CRUD操作,然后调用applychanges将这些更改“保存”到数据库中。看起来您的数据集和数据库不同步,但您的代码假设一切正常。对不起,我的错误是:数据集是“独立”的,后面没有数据库,只是加载并保存为xml的本地数据集。我们彼此都在讨论,DeletedRowInaccessibleExcpetion表示您试图访问已删除行的代码中的其他地方。你在任何地方调用applychanges吗?数据源和成员的重置工作正常,但我不明白为什么datagrid不更新它的数据绑定,因为我没有数据库,只有一个从xml本地加载的数据集。整个技术点都是这样的,所以数据的物理存储方式无关紧要。如果从数据集中删除,但不调用apply changes,则该文件尚未从文件中删除,它已在数据集中标记为已删除。