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

ASP.NET 2.0 資料教程 46:DataList/Repeater 自訂按鈕命令實作

     編輯:關於ASP.NET

DataList 與 Repeater 內建編輯/刪除按鈕 (CommandName=Edit/Delete),亦可自訂按鈕執行專屬伺服器邏輯。

實作步驟

  1. 在 `ItemTemplate` 放入 `Button`/`LinkButton`/`ImageButton`,設定 `CommandName="自訂名稱"`、`CommandArgument='<%# Eval("PK") %>'`。
  2. 處理 `ItemCommand` 事件,依 `e.CommandName` 分派邏輯。

完整範例:類別清單點擊顯示產品

前端

<asp:Repeater ID="rptCategories" runat="server" OnItemCommand="rptCategories_ItemCommand">
    <ItemTemplate>
        <b><%# Eval("CategoryName") %></b>
        <asp:LinkButton ID="btnShow" runat="server" 
            CommandName="ShowProducts" 
            CommandArgument='<%# Eval("CategoryID") %>'
            Text="顯示產品" />
        <br />
    </ItemTemplate>
</asp:Repeater>

<asp:GridView ID="gvProducts" runat="server" />

後端

protected void rptCategories_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "ShowProducts")
    {
        int catId = Convert.ToInt32(e.CommandArgument);
        // 查詢產品並繫結
        gvProducts.DataSource = GetProductsByCategory(catId);
        gvProducts.DataBind();
    }
}

進階:多按鈕與巢狀控制項

  • 同一 `ItemTemplate` 可放多個按鈕,`CommandName` 分別為 `Edit`、`Delete`、`ViewDetail` 等。
  • 若按鈕在巢狀控制項 (如 GridView 在 Repeater 內),事件會冒泡至外層 Repeater 的 `ItemCommand`,需在 `e.Item` 找到來源控制項。

注意事項

  • 自訂 `CommandName` 不要與內建 `Edit`、`Delete`、`Update`、`Cancel`、`Select`、`Page` 衝突,除非有意覆寫。
  • `CommandArgument` 傳遞單一值;需傳多值可用 JSON 序列化或分隔字串,解析時注意特殊字元。
  • Repeater 無內建編輯/刪除 UI,需自行實作;DataList 有內建 `EditCommand`/`DeleteCommand` 事件可直接使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved