asp.net链接按钮没有触发

时间:2011-09-27 10:57:20

标签: asp.net

我在asp.net转发器控件中有一个链接按钮。我试图在click事件上调用serverside方法,但没有运气。我尝试了html锚点,但它没有工作,所以我切换到链接按钮。

<ItemTemplate>
 <li class="showmenu">
   <p class="subtext">&nbsp;&nbsp;<asp:LinkButton ID="LinkButton1" runat="server" onclick="frontimagechange_click">Front</asp:LinkButton></p>
  <a href="#"><img id="Img1" src='<%# this.ResolveUrl("~/testimages/" + Eval("front")) %>' width="350" height="560" alt='<%# Eval("stylenumber") %>' runat="server" align="left" /></a>                             
 </li>                   
</ItemTemplate> 

服务器端代码:

protected void frontimagechange_click(object sender, EventArgs e)
{
//code to get the id of link button and change the 
//src of the image control inside the repeater
} 

2 个答案:

答案 0 :(得分:3)

您需要处理Repeater控件的ItemCommand事件。

数据控件(如Repeater,DataList,GridView,FormView和DetailsView控件)使用Forwarded events

  

摘要:

     

而不是每个按钮单独举起一个事件,来自的事件   嵌套控件被转发到容器控件。容器   反过来使用允许的参数引发通用ItemCommand事件   你发现哪个控件引发了原始事件。通过   响应这个单一事件,你可以避免写   儿童控制的个人事件处理程序。

演示:

标记(.aspx)

<asp:Repeater ID="Repeater1" runat="server" 
    onitemcommand="Repeater1_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton 
            ID="LinkButton1" 
            runat="server"
            CommandName="cmd"
            >Click Me</asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>

在代码隐藏文件中,

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "cmd")
    {
        LinkButton button = e.CommandSource as LinkButton;

    }
}

答案 1 :(得分:1)

你的页面中

是autoEventWireUp = true吗?

你是否为转发器或页面启用了viewstate。

如果视图状态已关闭,它将无效