【c#】对在UpdatePanel内的Repeater内的控件设置PostBack

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
         <asp:Repeater ID="rptList" runat="server" OnItemDataBound="rptList_ItemDataBound" OnItemCommand="rpList_ItemCommand">
          <ItemTemplate>
          	<asp:Button ID="btnEdit" runat="server" Text="编辑" OnClick="btnEdit_Click" />
          </ItemTemplate>
         </asp:Repeater>
	<asp:Button ID="btnAdd" runat="server" Text="添加" OnClick="btnAdd_Click" />
 </ContentTemplate>    
     <Triggers>
         <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
     </Triggers>
 </asp:UpdatePanel>

一般情况下 UpdatePanel内控件采用如下方法即可

        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
        </Triggers>

但如果btnAdd是在包含在UpdatePanel内的Repeater内的控件,则会报错类型“System.Web.UI.UpdatePanel”不具有名为“xx”的公共属性

        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnEdit" EventName="Click" /> <!--这样是不行的-->
        </Triggers>

解决方法:
不在Triggers标签中设置,在控件对应事件中设置

protected void btnEdit_Click(object sender, EventArgs e)
{
 	ScriptManager.GetCurrent(this.Page).RegisterPostBackControl((Button)sender);
	...

}

如果ScriptManager在母版页中,则需先找到

((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl((Button)sender);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值