2011-09-27 63 views
0

我有一个链接按钮里面的asp.net中继器控制。我试图在点击事件上调用serverside方法,但没有运气。我试过html锚,但它不工作,所以我切换到链接按钮。asp.net链接按钮没有射击

<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 
} 
+0

@rahul的大部分我还没有得到的答案和我尝试了一些其他的方式来解决这个问题的问题,它不会工作。 – sam

+0

你确定你没有得到答案。其实我检查了你的问题,他们至少有一个或两个答案,除了网格一个outofindex错误 – rahularyansharma

回答

3

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

数据控件,如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; 

    } 
} 
+0

我需要得到linkbutton的id或独特的东西来改变图像控制的src。如何通过ItemCommand – sam

+0

@sam在linkbutton上实现这一点,设置CommandName和CommandArgument。在ItemCommand处理程序中,捕获并查找CommandArgument值。文档链接应该解释更多。 –

+0

@Blake问题是如果linkbutton被触发,那么我可以捕获CommandArgument。但它并没有开火。 – sam

1

是autoEventWireUp =在你的页面是真的吗?

是否启用了转发器或页面的视图状态。

如果视图状态是关闭