0

我有一个数据库,我想当我最初生成它时,我并没有费心选择“生成删除函数”选项,现在我发现自己想要添加它。

目前,我有一个绑定到数据库的gridview,每行都有一个删除按钮。看来我应该能够使用以下代码运行自定义删除功能;

protected void gvUsers_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    using (SqlConnection conn = new SqlConnection(database.ConnectionString))
    {
        SqlCommand command = conn.CreateCommand();
        command.CommandText = "DELETE FROM userlist WHERE Username='@insUsername'";
        command.CommandType = System.Data.CommandType.Text;

        command.Parameters.Add(new SqlParameter("insUsername", gvUsers.Rows[e.RowIndex].Cells[1].Text));

        conn.Open();
        command.ExecuteNonQuery();
    }
}

将上面的代码用作插入函数时我没有任何问题...我认为这与按钮是 GridView 的一部分这一事实有关吗?此刻我得到了;除非指定了 DeleteCommand,否则数据源“数据库”不支持删除。

对此的任何帮助都会很棒,谢谢。

4

2 回答 2

2

您可以将 SQL 放入 DeleteCommand 而不仅仅是过程名称...

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.deletecommand.aspx显示了这是如何完成的,但关键是:

DeleteCommand="DELETE FROM [Order Details] WHERE OrderID=@OrderID;DELETE FROM Orders WHERE OrderID=@OrderID;"

这应该可以解决它不允许在没有删除命令的情况下进行删除的问题。:)

编辑添加:

我发现的另一种选择建议在传递删除时在运行该函数后引发该错误。您可以e.Cancel=true在自己完成删除后取消删除事件。资源

于 2012-05-31T08:36:36.747 回答
0

不是完整的答案

您的查询文本应为:

"DELETE FROM userlist WHERE Username=@insUsername"

由于您使用的是参数,因此不需要单引号。

于 2012-05-31T08:32:23.997 回答