【问题标题】:ASP.net delete row using gridviewASP.net 使用 gridview 删除行
【发布时间】:2014-10-21 01:59:34
【问题描述】:

我正在尝试使用向 gridview 向导提供的删除功能删除一行。

但是当我点击删除时出现以下错误:

An exception of type 'System.InvalidOperationException' occurred in System.Data.Linq.dll but was not handled in user code

这是我的代码:

 public void deleteProject(DAL.Project p)
    {
        DAL.Project result = (from project in dc.Projects
                              where project.pk_project_id == p.pk_project_id
                              select project).Single();
        dc.Projects.DeleteOnSubmit(result);
        dc.SubmitChanges();
    }

当我调试它时,值“p”没有属性。

奇怪的是,当我想更新我的行时,我使用了相同的方法:

 DAL.Project result = (from project in dc.Projects
                              where project.pk_project_id == p.pk_project_id
                              select project).Single();
        result.titel = p.titel;
        result.beschrijving = p.beschrijving;

        dc.SubmitChanges();

这很顺利。那么为什么它不适用于删除行呢?

【问题讨论】:

  • 调用deleteProject之前好像没有分配DAL.Project,更新方法有什么不同?
  • nvm 我以为你的意思是 p 为空
  • 确实当我调用删除方法“p”= null,但调用更新时它不为空。奇怪的是,我以同样的方式称呼它们,所以它们不应该是一个问题。
  • 您需要弄清楚这两种方法的不同之处以及执行这些方法的代码。

标签: c# asp.net gridview wizard delete-row


【解决方案1】:

Enumerable.Single 如果序列包含多个项目或输入序列为空,则抛出InvalidOperationException。你可以使用FirstFirstOrDefault

DAL.Project result = (from project in dc.Projects
                      where project.pk_project_id == p.pk_project_id
                      select project).FirstOrDefault();
if(result != null)
{
     // ...
}

(但是,我不知道为什么更新工作)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2014-05-06
    • 2018-12-08
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多