如何在ListView中捕获事件?

时间:2010-06-22 18:05:32

标签: asp.net events

我有一个ListView,在项目模板中有一个Button。有没有办法让我确定从我的OnClick事件中点击了哪个项目的按钮?

我能够使用下面的代码完成它,但它看起来很狡猾。有更好的方法吗?

((ListViewDataItem)((Button)sender).Parent.Parent)

更新: 能够使用一个用户建议的NamingContainer方法实现,然后神秘地删除了他的答案。看起来比我原来的方法更安全:

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

2 个答案:

答案 0 :(得分:1)

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

HTH。

答案 1 :(得分:0)

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;

        }