ASP.net删除行使用gridview

问题描述:

我想删除一行使用删除功能提供trouhg gridview向导。ASP.net删除行使用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(); 

这远远。那么为什么它不适用于删除行?

+0

它看起来像DAL.Project没有被调用deleteProject之前分配的,是什么样的更新不同方法? – 2014-08-27 13:04:56

+0

nvm我以为你的意思是p为空 – 2014-08-27 13:06:06

+0

事实上,当我调用删除方法“p”= null时,但在调用update时它不为null。奇怪的是,我打电话给他们两个以相同的方式,所以他们不应该成为一个问题。 – user683326 2014-08-27 13:28:36

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) 
{ 
    // ... 
} 

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

+0

它仍然无法正常工作。 – user683326 2014-08-27 13:35:28