首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET GridView 行內按鈕 (編輯/刪除/檢視) 完整實作指南

     編輯:ASP.NET 基礎

標記宣告:TemplateField + CommandName



    
        
        
        
        
        
        
            
                

後端 RowCommand 事件處理


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 內建處理

    // 自訂命令處理...
}

刪除確認與使用者體驗優化

1. 客戶端確認 (OnClientClick)



2. AJAX 非同步刪除 (無重新整理)



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved