如何从asp.net DataList

时间:2016-06-14 17:51:22

标签: c# asp.net

我在asp.net webform中有一个DataList控件,在这个DataLIst里面我有两个绑定到数据库的标签,还有一个按钮。 其中一个标签代表Id和其他一个股票。 我想捕获特定产品的按钮单击事件,然后将该产品添加到用户购物车。

这是我的数据主义者:

 <asp:DataList ID="dListProduct" runat="server" RepeatColumns="4" OnItemCommand="dListProduct_ItemCommand">
            <ItemTemplate>
                <div>
                    <table class="table-responsive" border="1">                    
                        <tr>
                             <td>
                                  <asp:Label runat="server" Text="Available Stock: " ></asp:Label><asp:Label ID="Label1" runat="server" Text='<%# Eval("Stock")%>'></asp:Label>
                            </td>
                        </tr>
                        <tr>
                             <td>
                                  <asp:Label runat="server" Text="Id" ></asp:Label><asp:Label ID="lblPId" runat="server" Text='<%# Eval("Product_Id")%>' Visible="false"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                             <td>
                                 <asp:Button id="btnAddtoCart" runat="server" Text="Add to Cart"/>
                            </td>
                        </tr>
                    </table>
                </div>
            </ItemTemplate>
        </asp:DataList>

以下是我在OnItemCommand DataList中使用的代码:

 protected void dListProduct_ItemCommand(object source, DataListCommandEventArgs e)
        {
            Label lbl = (Label)e.Item.FindControl("lblPId");
            Response.Write(lbl.Text);
        }

但这段代码永远不会被执行。 谁能帮助我?

1 个答案:

答案 0 :(得分:0)

完全按照我的方式复制并粘贴下面的代码。

代码背后:

public partial class DataListExample : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            this.BindData();
        }
    }

    private void BindData()
    {
        MyStock stock1 = new MyStock { Product_Id = 1, Stock = "Stock 1" };
        MyStock stock2 = new MyStock { Product_Id = 2, Stock = "Stock 2" };
        dListProduct.DataSource = new List<MyStock> { stock1, stock2 };
        dListProduct.DataBind();
    }

    protected void dListProduct_ItemCommand(object source, DataListCommandEventArgs e)
    {
        Label lbl = (Label)e.Item.FindControl("lblPId");
        Response.Write(lbl.Text);
    }
}

public class MyStock
{
    public int Product_Id { get; set; }
    public string Stock { get; set; }
}

<强> .ASPX:

<asp:DataList ID="dListProduct" runat="server" RepeatColumns="4" OnItemCommand="dListProduct_ItemCommand">
    <ItemTemplate>
        <div>
            <table class="table-responsive" border="1">
                <tr>
                    <td>
                        <asp:Label runat="server" Text="Available Stock: "></asp:Label><asp:Label ID="Label1" runat="server" Text='<%# Eval("Stock")%>'></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label runat="server" Text="Id"></asp:Label><asp:Label ID="lblPId" runat="server" Text='<%# Eval("Product_Id")%>' Visible="false"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="btnAddtoCart" runat="server" Text="Add to Cart" />
                    </td>
                </tr>
            </table>
        </div>
    </ItemTemplate>
</asp:DataList>