C# GridView自动生成的删除命令不工作的可能原因

C# GridView自动生成的删除命令不工作的可能原因,c#,asp.net,sql,database,C#,Asp.net,Sql,Database,我有一个GridView和一个SqlDataSource,我已将其设置为自动生成Delete/Insert/Update语句。然后我在GridView上启用了删除,通常我会离开。但是由于某种原因,该行没有被删除-页面正在发回,但该行仍然存在。单击“删除”时,行删除会触发 这可能是什么原因 编辑:选择命令: SELECT id, templatename, CASE WHEN type = 'W' THEN 'Weekly' WHEN type = 'M' THEN 'Monthly' WHEN

我有一个GridView和一个SqlDataSource,我已将其设置为自动生成Delete/Insert/Update语句。然后我在GridView上启用了删除,通常我会离开。但是由于某种原因,该行没有被删除-页面正在发回,但该行仍然存在。单击“删除”时,行删除会触发

这可能是什么原因

编辑:选择命令:

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)

尝试将删除列转换为模板字段。与imagebuttons组合使用的delete命令存在已知错误。

请尝试查看在DB上执行了哪个SQL语句。
为此,您可以使用SQL Server Profiler实用程序

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

尝试在ROWDERTING事件中写入,而不是自动生成,可能是因为需要获取要删除Where子句的行的id

例如: Label13是隐藏的,我从select语句中获取它,但我不向用户显示它。 VB.NET:

C


不,但这是重点。我经常更改的是SELECT命令,但它都来自一个表。我将用这个更新帖子。只使用生成的bog标准select进行了尝试,但仍然不起作用:我已经尝试过了,遗憾的是仍然没有任何效果。而且我相信它只是使用链接按钮
    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
    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();
}