2010-11-09 38 views
0

我有一个GridView和一个SqlDataSource,我已经设置为自动生成删除/插入/更新语句。然后,我在GridView上启用了删除功能,通常我会走。不过由于某些原因,该行并未被删除 - 该页面正在回发,但该行仍然存在。当单击删除时,RowDeleting确实会触发。自动生成的可能的原因删除命令GridView不工作

这可能是什么原因造成的?

编辑:SELECT命令:

SELECT id, templatename, CASE WHEN type = 'W' THEN 'Weekly' WHEN type = 'M' THEN 'Monthly' WHEN type = 'Q' THEN 'Quarterly' WHEN type = 'S' THEN 'Six-monthly' WHEN type = 'A' THEN 'Anually' END AS TypeText, CASE WHEN invorcred = 'I' THEN 'Invoice' WHEN invorcred = 'C' THEN 'Credit' END AS 'InvOrCredText', nextinvdate, lastinvdate FROM InvoiceTemplates WHERE (sageaccount = @sageaccount) 

回答

2

尝试在RowDeleting事件,而不是自动生成的写,也许是因为你需要得到你想要删除的行的id(Where子句)

例子: Label13是隐藏的,我把它从选择语句,但我不显示它的用户。 VB.NET:

Protected Sub gvAddresses_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvAddresses.RowDeleting 

     Dim selectedAddessId As Label = gvAddresses.Rows(e.RowIndex).FindControl("Label13") 
     SqlDataSource.DeleteParameters("add_id").DefaultValue = selectedAddessId.Text 
     SqlDataSource.Delete() 
End Sub 

C#

protected void gvAddresses_RowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e) 
{ 
    //Get the address Id to delete the selected address only 
    Label selectedAddessId = gvAddresses.Rows(e.RowIndex).FindControl("Label13"); 
    SqlDataSource.DeleteParameters("add_id").DefaultValue = selectedAddessId.Text; 
    SqlDataSource.Delete(); 
} 
0

尝试删除列转换为模板字段。删除命令与imagebuttons结合存在一个已知的错误。

+0

我已经试过了,并伤心地仍然一无所获。另外我相信它只是使用LinkBut​​ton – Chris 2010-11-09 11:37:48

0

尝试查看哪些SQL语句已在数据库上执行。 (您可以使用“SQL Server Profiler”实用程序)

0

您是否从数据库中的多个表中返回数据?如果你的sqldatasource的select命令从多个表中选择数据,我认为delete命令不起作用。

+0

不,但这是一个重点。我一直在改变的是SELECT命令,但它全部来自一个表格。我会用这个更新这个帖子。 – Chris 2010-11-09 11:36:57

+0

试用只是沼泽标准选择生成,仍然无法工作:( – Chris 2010-11-09 11:44:32

相关问题