2013-02-04 353 views
1

嘿,我只是学习如何使用asp.net,我试图使用网格视图来显示信息和详细信息查看编辑/从数据库中删除信息。现在,我可以编辑和更新数据库中的信息,但我也希望它可以删除,而某些内容对我来说不起作用。我设置了一个例外,当我选择该项目并按下删除时,它弹出我的例外情况,即另一个用户删除了该项目时,该项目没有。林不知道我做错了什么,对我来说,它看起来应该工作。从SQL详细信息删除查看

这里是delete命令和参数,从细节来看

 DeleteCommand="DELETE FROM [Customers] 
    WHERE [CustomerID] = @original_CustomerID 
     AND [Name] = @original_Name 
     AND [Address] = @original_Address 
     AND [City] = @original_City 
     AND [State] = @original_State 
      AND [ZipCode] = @original_ZipCode 
      AND ([Phone] = @original_Phone 
      OR [Phone] IS NULL AND @original_Phone IS NULL) 
      AND ([Email] = @original_Email 
      OR [Email] IS NULL AND @original_Email IS NULL)" 

<DeleteParameters> 
     <asp:Parameter Name="original_CustomerID" Type="Int32" /> 
     <asp:Parameter Name="original_Name" Type="String" /> 
     <asp:Parameter Name="original_Address" Type="String" /> 
     <asp:Parameter Name="original_City" Type="String" /> 
     <asp:Parameter Name="original_State" Type="String" /> 
     <asp:Parameter Name="original_ZipCode" Type="String" /> 
     <asp:Parameter Name="original_Phone" Type="String" /> 
     <asp:Parameter Name="original_Email" Type="String" /> 
    </DeleteParameters> 

代码,这里是在CS文件删除功能

protected void DetailsView1_ItemDeleted(object sender, DetailsViewDeletedEventArgs e) 
{ 
    if (e.Exception != null) 
    { 
     lblError.Text = "A database error has occurred.<br /><br />" + 
      "Message: " + e.Exception.Message; 
     e.ExceptionHandled = true; 
    } 
    else if (e.AffectedRows == 0) 
     lblError.Text = "Another user may have deleted that customer." 
      + "<br />Please try again."; 
    else 
     GridView1.DataBind(); 
} 

protected void DetailsView1_ItemDeleting(
    object sender, DetailsViewDeleteEventArgs e) 
{ 
    e.Values["Name"] 
     = e.Values["Name"].ToString().Substring(1); 
} 

回答

0

为什么你有这样一个庞大的查询对于删除语句?看看它是如何完成的MSDN DetailsView example

你的SQL表中的CustomerID应该是unique所以你删除的说法应该是简单的:

DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @original_CustomerID" 

而且只有一个删除参数:

<DeleteParameters> 
     <asp:Parameter Name="original_CustomerID" Type="Int32" /> 
</DeleteParameters> 

还有一个这是非常重要的事情是,你需要设置DataKeyNames="CustomerID"上DetailsView控件使DetailsView1_ItemDeleted知道要删除哪一行。希望这可以帮助!

+0

嘿谢谢你的帮助,它解决了我的问题! – Justcuz

+0

不客气,请记住标记为回答,方法是在帮助您的答案旁边选择一个刻度符号 –