在repeater中嵌套LinkButton 调用服务端的代码时,使用CodeBehind一点问题都没有
但是将CodeBehind中的代码放到aspx页面中的<script runat=server>标签中时
会出现这样的情况:嵌套在repeater中的LinkButton总是调用不到服务端的方法,页面只是刷新了一下
但是直接放在页面上的LinkButton确可以调用到
<asp:Repeater runat="server" ID="rptParent"
onitemdatabound="rptParent_ItemDataBound" >
<HeaderTemplate>
<table cellpadding="2" cellspacing="0" border="0" style="width: 95%;" class="tblno">
<tr>
<td class="left alter" style="width: 20%; text-align: center;">
权限名:
</td>
<td class="alter">
子级
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="left alter" style="width: auto; text-align: left;">
<a href="purviewmodify.aspx?pid=<%# ((DataRowView)Container.DataItem)["id"]%>">
<%# ((DataRowView)Container.DataItem)["Name"]%></a>
<%--OnClientClick="return confirm('删除根级的话,子级也会一并删除,确定要删除吗?')"--%>
<asp:LinkButton runat="server" ID="lkbDel" Text="删除" OnClick="lkb_Click"></asp:LinkButton>
</td>
<td class="alter">
<asp:Repeater runat="server" ID="rptPurview" >
<ItemTemplate>
<a href="purviewmodify.aspx?pid=<%# ((DataRowView)Container.DataItem)["id"]%>">
<%# ((DataRowView)Container.DataItem)["Name"]%></a>
<asp:LinkButton runat="server" ID="Dels" Text="删除" CommandArgument='<%# ((DataRowView)Container.DataItem)["id"]%>'
OnClientClick="return confirm('确定要删除此权限吗?');"
OnClick="lkb_Click"></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<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"));
}