如何从Datalist中的Linkbutton获取DataKeyField?

时间:2012-12-02 02:14:15

标签: asp.net

asp.net的新手,所以任何帮助都会很棒谢谢。

我有一个Datalist,它有产品名称,价格,图片和数据列表中的链接按钮,它还包含未显示的ProductID。

如何从LinkBut​​ton的onClick事件中获取当前的productID谢谢。

我的数据列表

<asp:DataList ID="dlProduct" runat="server" DataKeyField="ProductID" RepeatDirection="Horizontal" RepeatColumns="4" CellPadding="10" CellSpacing="10" >
                    <ItemTemplate>                                 
                        <asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' />   
                        <br />Price:
                        <asp:Label ID="PriceLabel" runat="server" Text='<%# "$" + Eval("Price") %>'  />
                        <br />            
                        <asp:Image ID="Image1" runat="server" CssClass="ImageStyles" ImageUrl='<%# "GetImage.ashx?Id=" + Eval("PID") %>' BackColor="White" BorderStyle="Ridge" BorderColor="WhiteSmoke" />
                        <br />
                        <asp:LinkButton ID="btnAddToCart" OnClick="btnAddToCart_Click" runat="server"><img src="images/AddToCart.png" onmouseover="this.src='images/AddToCartMouseOver.png';" onmouseout="this.src='images/AddToCart.png';" /></asp:LinkButton>
                    </ItemTemplate>
                </asp:DataList> 

我的代码背后

protected void btnAddToCart_Click(object sender, EventArgs e)
    {

        ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('Product ID = "+ PID.Text + "');</script>", false);
    }

1 个答案:

答案 0 :(得分:2)

使用LinkBut​​ton控件的CommandArgument属性。

像:

            <asp:LinkButton ID="btnAddToCart"
                CommandName="AddToCart" 
                CommandArgument='<%# Eval("ProductId") %>' 
                 OnCommand="btnAddToCart_Command" runat="server">

然后在btnAddToCart_Command中你可以获得这样的命令参数。

    protected void btnAddToCart_Command(object sender, CommandEventArgs args)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('Product ID = " + args.CommandArgument+ "');</script>", false);
    }

希望这有帮助。