ASP.Net:为什么我的按钮的点击/命令事件没有约束力/在一个中继器发射? [英] ASP.Net: why is my button's click/command events not binding/firing in a repeater?

查看:136
本文介绍了ASP.Net:为什么我的按钮的点击/命令事件没有约束力/在一个中继器发射?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是从具有中继器的ASCX code:

Here's the code from the ascx that has the repeater:

<asp:Repeater ID="ListOfEmails" runat="server" >
    <HeaderTemplate><h3>A sub-header:</h3></HeaderTemplate>
    <ItemTemplate>
    	[Some other stuff is here]
    	<asp:Button ID="removeEmail" runat="server" Text="X" ToolTip="remove" />
    </ItemTemplate>
</asp:Repeater>

和在codebehind为中继的数据绑定和事件:

And in the codebehind for the repeater's databound and events:

Protected Sub ListOfEmails_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles ListOfEmails.ItemDataBound
    If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then
    	Dim removeEmail As Button = CType(e.Item.FindControl("removeEmail"), Button)
    	removeEmail.CommandArgument = e.Item.ItemIndex.ToString()

    	AddHandler removeEmail.Click, AddressOf removeEmail_Click
    	AddHandler removeEmail.Command, AddressOf removeEmail_Command
    End If
End Sub

Sub removeEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Response.Write("<h1>click</h1>")
End Sub

Sub removeEmail_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
    Response.Write("<h1>command</h1>")
End Sub

无论是点击或命令获取调用,我究竟做错了什么?

Neither the click or command is getting called, what am I doing wrong?

推荐答案

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

Controls nested inside of Repeaters do not intercept events. Instead you need to bind to the Repeater.ItemCommand Event.

ItemCommand包含有两个重要的领域RepeaterCommandEventArgs:

ItemCommand contains RepeaterCommandEventArgs which has two important fields:


  • 的CommandName

  • CommandArgument

所以,一个简​​单的例子:

So, a trivial example:

  void rptr_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                // Stuff to databind
                Button myButton = (Button)e.Item.FindControl("myButton");

                myButton.CommandName = "Add";
                myButton.CommandArgument = "Some Identifying Argument";
            }
        }

void rptr_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Add")
            {
                // Do your event
            }
        }

编辑:降价完全大清洗我的压痕,哦,我应该停止在这个文本写作code反正

Markdown totally hosed my indentation, oh well, I should stop writing code in this textbox anyways.

这篇关于ASP.Net:为什么我的按钮的点击/命令事件没有约束力/在一个中继器发射?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆