2010-06-22 82 views
1

我有一个ListView在项目模板中有一个按钮。有没有一种方法可以确定哪个项目的按钮已经从我的OnClick事件中点击?如何在ListView中捕获事件?

我能够用下面的代码做到这一点,但它似乎是蹩脚的。有一个更好的方法吗?

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

UPDATE: 之所以能够使用NamingContainer方法一个用户建议,然后神秘地带走了他的答案来实现。似乎比我的原始方法更安全:

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

回答

1

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

HTH。

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; 

     }