0

これは、その行の DELETE ボタンがクリックされたときに行を削除し、同時にデータベースも更新する必要がある私のコードです。

    protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e)
    {
     if (e.CommandName.Equals("Delete"))
     {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gvDetails.Rows[index];
        string productID = gvDetails.DataKeys[index].Value.ToString();
        string productName = row.Cells[1].Text;
        this.RemoveProduct(productID, productName);
     }
    }
public void RemoveProduct(string productID, string productName)
{
   DataRow dr;
   SQLConnection objcon;
   SqlDataAdapter objadp;
   objcon=new SqlConnection("Connecting string");
    try
    {
        objcon.Open();
        DataSet ds = new DataSet();
        objadp = new SqlDataAdapter("Select *from Bus_Table", objcon);
        objadp.Fill(ds, "Bus_Table");
        objadp.DeleteCommand = objcon.CreateCommand();
        objadp.DeleteCommand.CommandText = "DELETE from Bus_Table where B_ID=" +int.Parse(productID);
        DataTable objtable = new DataTable();
        ds.Tables.Add(objtable);
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            if (dr["B_ID"].Equals(productID))
            {
                DataRow objrow = dr;
                objrow.Delete();
                objadp.Update(ds, "Bus_Table");
                ds.AcceptChanges();
                Response.Write("Bus Deleted");
                break;
            }
        }
    }
    catch (SqlException ex)
    {
        Response.Write(ex.Message);
    }
    finally
    {
        objcon.Close();
    }
}

このコードをコンパイルすると、エラーが発生します。

「DeleteCommand が指定されていない限り、削除はデータ ソース 'SqlDataSource1' (私のデータ ソース) ではサポートされていません」.

RemoveProduct(string productID, string productName)ブレークポイントを配置すると、 が呼び出されていないことに気付きましgvDetails_RowCommand()たが、エントリも削除されます。

4

2 に答える 2

1

これらの記事を見てください。グリッドビューから単一/複数の行を削除する方法について詳しく説明しています。 http://technico.qnownow.com/2012/06/15/how-to-delete-multiple-rows-from-gridview-with-checkboxes/ http://technico.qnownow.com/2012/06/14/グリッドビューから行を削除する方法とクライアント側の確認/

于 2012-07-08T02:28:37.457 に答える
0

GridView によって認識される予約済みのコマンド名がいくつかあります。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

で発生したコマンド イベントが「予約済み」イベントの 1 つGridViewCommandNameある場合、この場合は「Delete」であり、は割り当てられている(GridViewを使用して割り当てられている) を使用して削除を実行しようとします。DataSourceDataSourceId

この問題を解決するには:

  • SqlDataSource に削除コマンドを追加する

また

  • CommandNameボタンを別のものに変更し、コードでそれを確認します
于 2012-07-05T11:26:40.127 に答える