0

ここで、データグリッドビューに削除機能を使用しようとしています。コードの背後にあるのは次のとおりです。

 protected void gvTransaction_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        logID = Helper.GetLogID();
        try
        {
            LKLog.Write(logID, "Transaction.aspx.cs", "gvTransaction_RowDeleting", "Start Method", string.Empty, Helper.GetUserName());

            GridViewRow row = gvTransaction.Rows[e.RowIndex];
            orgID = CommonFunctions.StringToInt(gvTransaction.DataKeys[e.RowIndex].Values[0].ToString());
            siteID = CommonFunctions.StringToInt(gvTransaction.DataKeys[e.RowIndex].Values[1].ToString());
            int transactionID = CommonFunctions.StringToInt(gvTransaction.DataKeys[e.RowIndex].Values[2].ToString());
            clsTransaction.DeleteTransaction(logID, orgID, siteID, transactionID, true);

            string message = string.Format(Constants.DeleteMessage, "Transaction");
            LKLog.Write(logID, "Transaction.aspx.cs", "gvTransaction_RowDeleting", "End Method", string.Empty, Helper.GetUserName());
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Info", "alert('" + message + "');window.location ='Transaction.aspx';", true);
        }
        catch (Exception ex)
        {
            LKLog.Write(logID, "Transaction.aspx.cs", "gvTransaction_RowDeleting", ex.StackTrace, ex.Message, Helper.GetUserName());
            throw;
        }
    }

クラス関数は次のとおりです。

        public static void DeleteTransaction(decimal logID, int orgID, int siteID, int TransactionID, bool isActive)
    {
        LKLog.Write(logID, "clsTransaction.cs", "DeleteTransaction", "Start Method", string.Empty, Helper.GetUserName());
        using (SqlConnection conn = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)))
        {
            try
            {
                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "spMSTransaction_Delete";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("OrgID", orgID));
                cmd.Parameters.Add(new SqlParameter("SiteID", siteID));
                cmd.Parameters.Add(new SqlParameter("TransactionID", TransactionID));
                cmd.Parameters.Add(new SqlParameter("IsActive", siteID));
                cmd.Parameters.Add(new SqlParameter("Username", Helper.GetUserName()));
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                LKLog.Write(logID, "clsTransaction.cs", "DeleteTransaction", ex.StackTrace, ex.Message, Helper.GetUserName());
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
        LKLog.Write(logID, "clsTransaction.cs", "DeleteTransaction", "End Method", string.Empty, Helper.GetUserName());
    }

問題は、コードが機能しないことです (行は削除されず、同じままです)。コードの使用に間違いや間違った慣行はありますか? ご協力ありがとうございました

ストアド プロシージャを編集します。

ALTER PROC [dbo].[spMSTransaction_Delete] 
@OrgID int,
@SiteID int,
@TransactionID int,
@IsActive bit,
@Username varchar(50)
 AS 
  SET NOCOUNT ON
  SET XACT_ABORT ON  

BEGIN TRAN

UPDATE  [dbo].[MSTransaction]
SET     [IsActive] = @IsActive, 
        [ModifiedDate] = GETUTCDATE(), 
        [ModifiedBy] = @Username
WHERE   [OrgID] = @OrgID
        AND [SiteID] = @SiteID
        AND [TransactionID] = @TransactionID

COMMIT
4

1 に答える 1