【问题标题】:How to get Id of a DataItem in ListView after DataBoundDataBound后如何在ListView中获取DataItem的ID
【发布时间】:2010-09-12 07:03:18
【问题描述】:

我是 ListView 控件的新手。我有一个列表视图来显示购物产品。在每个数据项中,我为“添加到购物车”按钮添加了一个链接按钮。在我的场景中,单击此按钮会导致 ShoppingCart.Instance.AddItem("Product GUID") 调用。我该怎么做?
我在链接按钮中设置CommandName="Select" 并执行此操作:

protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
    ListViewItem item = (ListViewItem)ListView1.Items[e.NewSelectedIndex];
    LinkButton lb = (LinkButton)item.FindControl("LinkButtonAddAndClose");
// Here i want to get selected Product Id...
}

但 selectedIndex 始终为零!!! 如何调用 ShoppingCart.Instance.AddItem("Product GUID") 并从 DataItem 获取产品 ID???
注意:Eval("ID") 获取产品 GUID。

更新:
我为 LinkBut​​ton 的 CommandArgument 设置了<%# Eval("ID")%>,我想要链接这个:

protected void LinkButtonAddAndClose_Click(object sender, EventArgs e)
{
    LinkButton lb = (LinkButton)sender;

    var productId = new Guid(lb.CommandArgument);

    ShoppingCart.Instance.AddItem(productId);
}

【问题讨论】:

    标签: c# asp.net listview


    【解决方案1】:

    您可以使用 ListView 控件的 itemcommand 事件访问选定行内的控件:

    protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
       //for example i want to take commandargumetn atribute of current linkbutton
       string st= (e.Item.FindControl("LinkButtonAddAndClose") as LinkButton).CommandArgument;
    }
    

    【讨论】:

    • 您需要对上面给出的代码示例进行格式化,以便注释和代码是分开的。
    • 您的代码只返回第一个数据项的 CommandArgument。我将 '' 用于 LinkBut​​ton 的 CommandArgument,但始终 st 是第一个项目 ID。我更新了我的问题,请注意。
    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多