Asp.net 如何在ListView中捕获事件?

Asp.net 如何在ListView中捕获事件?,asp.net,events,Asp.net,Events,我有一个列表视图,它在项目模板中有一个按钮。有没有一种方法可以让我从OnClick事件中识别哪个项目的按钮被点击了 我可以用下面的代码来做,但它看起来很粗糙。有更好的方法吗 ((ListViewDataItem)((Button)sender).Parent.Parent) 更新: 能够使用一个用户建议的NamingContainer方法实现,然后神秘地删除了他的答案。似乎比我原来的方法更安全: ((ListViewDataItem)((Button)sender).NamingContain

我有一个列表视图,它在项目模板中有一个按钮。有没有一种方法可以让我从OnClick事件中识别哪个项目的按钮被点击了

我可以用下面的代码来做,但它看起来很粗糙。有更好的方法吗

((ListViewDataItem)((Button)sender).Parent.Parent)
更新: 能够使用一个用户建议的NamingContainer方法实现,然后神秘地删除了他的答案。似乎比我原来的方法更安全:

((ListViewDataItem)((Button)sender).NamingContainer)

是,给按钮一个命令名,然后附加到ListView.ItemCommand;单击按钮将触发此事件,并且它具有有关列表项的更多详细信息,例如通过e.item对其进行引用


HTH.

是,给按钮一个命令名,然后附加到ListView.ItemCommand;单击按钮将触发此事件,并且它具有有关列表项的更多详细信息,例如通过e.item对其进行引用

protected void RemoveButton_Click(object sender, EventArgs e)
        {
            ListViewDataItem item = ((ListViewDataItem)((Button)sender).NamingContainer);
            //ListViewDataItem item = (ListViewDataItem)((LinkButton)sender).Parent;

            int i = item.DisplayIndex;
            DataTable dt = (DataTable)Session["cart"];
            dt.Rows[i].Delete();

            Listcart.DataSource = dt;
            Listcart.DataBind();

            Label Lblcart = (Label)Page.Master.FindControl("Lbitem");
            Lblcart.Text = Listcart.Controls.Count.ToString();
            Session["quantity"] = Lblcart.Text;
            Session["cart"] = dt;
            GrandTotal();
            Session["amount"] = LbGrandTotal.Text;

        }