protected void gvOrders_RowCommand(object sender, GridViewCommandEventArgs e)
{
// 取得資料鍵值 (需設定 DataKeyNames)
int orderId = Convert.ToInt32(e.CommandArgument);
switch (e.CommandName.ToLower())
{
case "edit":
Response.Redirect($"OrderEdit.aspx?id={orderId}&returnUrl={Server.UrlEncode(Request.RawUrl)}");
break;
case "delete":
try
{
int affected = new BLL.OrderService().Delete(orderId);
if (affected > 0)
{
ShowMessage("刪除成功");
gvOrders.DataBind(); // 重新繫結
}
else
ShowMessage("刪除失敗,資料可能已不存在");
}
catch (Exception ex)
{
LogError(ex);
ShowMessage("刪除發生錯誤:" + ex.Message);
}
break;
case "view":
// HyperLink 已處理導航,這裡通常不需處理
break;
default:
// 忽略排序/分頁等內建命令
break;
}
}
GridView 內建命令 (Sort、Page、Select) 也會觸發 RowCommand。建議:
protected void gvOrders_RowCommand(object sender, GridViewCommandEventArgs e)
{
// 內建命令名稱
string[] builtIn = { "Sort", "Page", "Select" };
if (Array.Exists(builtIn, c => c.Equals(e.CommandName, StringComparison.OrdinalIgnoreCase)))
return; // 交給 GridView 內建處理
// 自訂命令處理...
}