我在asp.net转发器控件中有一个链接按钮。我试图在click事件上调用serverside方法,但没有运气。我尝试了html锚点,但它没有工作,所以我切换到链接按钮。
<ItemTemplate>
<li class="showmenu">
<p class="subtext"> <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 :(得分: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。
如果视图状态已关闭,它将无效