在repeater中嵌套LinkButton 调用服务端的代码时,使用CodeBehind一点问题都没有
但是将CodeBehind中的代码放到aspx页面中的<script runat=server>标签中时
会出现这样的情况:嵌套在repeater中的LinkButton总是调用不到服务端的方法,页面只是刷新了一下
但是直接放在页面上的LinkButton确可以调用到
<script runat=server>与CodeBehind 有什么不同会导致这个问题哟?
aspx代码
<asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<%# GetDataItem() %>
<asp:LinkButton runat="server" ID="LinkButton1" Text="嵌套测试" OnClick="Lkb_Click"></asp:LinkButton><br />
</ItemTemplate>
</asp:Repeater>
<asp:LinkButton runat="server" ID="Lkb" Text="页面测试" OnClick="Lkb_Click"></asp:LinkButton>
CodeBehind 代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Binder();
}
}
protected void Binder()
{
string[] arr = { "a", "b", "c" };
Repeater1.DataSource = arr;
Repeater1.DataBind();
}
protected void Lkb_Click(object sender, EventArgs e)
{
this.Response.Write("测试成功"+DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
}
默认来说,如果在repeater里面触发的事件都会被Repeater.ItemCommand给接收到,所以导致了你的linkbutton不触发,你可以为Repeater添加ItemCommand事件设个断点就可以看到效果了
看一下MSDN中关于Repeater.ItemCommand的介绍吧