ASP.Net:为什么我的按钮的点击/命令事件没有在转发器中绑定/触发?

前端之家收集整理的这篇文章主要介绍了ASP.Net:为什么我的按钮的点击/命令事件没有在转发器中绑定/触发?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是来自ascx的具有中继器的代码
  1. <asp:Repeater ID="ListOfEmails" runat="server" >
  2. <HeaderTemplate><h3>A sub-header:</h3></HeaderTemplate>
  3. <ItemTemplate>
  4. [Some other stuff is here]
  5. <asp:Button ID="removeEmail" runat="server" Text="X" ToolTip="remove" />
  6. </ItemTemplate>
  7. </asp:Repeater>

在中继器的数据绑定和事件的代码中:

  1. Protected Sub ListOfEmails_ItemDataBound(ByVal sender As Object,ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles ListOfEmails.ItemDataBound
  2. If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
  3. Dim removeEmail As Button = CType(e.Item.FindControl("removeEmail"),Button)
  4. removeEmail.CommandArgument = e.Item.ItemIndex.ToString()
  5.  
  6. AddHandler removeEmail.Click,AddressOf removeEmail_Click
  7. AddHandler removeEmail.Command,AddressOf removeEmail_Command
  8. End If
  9. End Sub
  10.  
  11. Sub removeEmail_Click(ByVal sender As Object,ByVal e As System.EventArgs)
  12. Response.Write("<h1>click</h1>")
  13. End Sub
  14.  
  15. Sub removeEmail_Command(ByVal sender As Object,ByVal e As CommandEventArgs)
  16. Response.Write("<h1>command</h1>")
  17. End Sub

点击或命令都没有被调用,我做错了什么?

解决方法

嵌套在中继器内部的控件不会拦截事件.相反,您需要绑定到Repeater.ItemCommand事件.

ItemCommand包含RepeaterCommandEventArgs,它有两个重要的字段:

> CommandName
> CommandArgument

所以,一个微不足道的例子:

  1. void rptr_ItemDataBound(object sender,RepeaterItemEventArgs e)
  2. {
  3. if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
  4. {
  5. // Stuff to databind
  6. Button myButton = (Button)e.Item.FindControl("myButton");
  7.  
  8. myButton.CommandName = "Add";
  9. myButton.CommandArgument = "Some Identifying Argument";
  10. }
  11. }
  12.  
  13. void rptr_ItemCommand(object source,RepeaterCommandEventArgs e)
  14. {
  15. if (e.CommandName == "Add")
  16. {
  17. // Do your event
  18. }
  19. }

编辑:Markdown完全希望我的缩进,哦,我应该停止在这个文本框中编写代码.

猜你在找的asp.Net相关文章