0

私はデータベースを持っています。最初にデータベースを生成したときは、「削除機能の生成」オプションをわざわざ選択しなかったので、それを追加したいと思っています。

現在、各行に削除ボタンが付いたグリッドビューがデータベースにバインドされています。次のコードでカスタム削除関数を実行できるはずです。

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;"

これにより、deleteコマンドなしで削除が許可されないという問題を回避できます。:)

編集して追加:

私が見つけたもう1つの代替案は、削除を渡すときにその関数が実行された後にエラーがスローされることを示唆していました。e.Cancel=true自分で削除を行った後、を使用して削除イベントをキャンセルできます。ソース

于 2012-05-31T08:36:36.747 に答える
0

完全な答えではありません

クエリテキストは次のようになります。

"DELETE FROM userlist WHERE Username=@insUsername"

パラメータを使用しているので、一重引用符は必要ありません。

于 2012-05-31T08:32:23.997 に答える