mko*_*mko 3 asp.net updatepanel webforms repeater asynchronous-postback
我试图获得一个cbxSupplement触发器updatepanel刷新,但我不确定我是否使用了错误EventName或者它是不可能的CheckBox.如果我更换CheckBox用Button,它工作正常.
<asp:Repeater ID="repSupplements" runat="server">
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbxSupplement" />
</ItemTemplate>
</asp:Repeater>
<asp:UpdatePanel runat="server" ID="up1">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="repSupplements" EventName="CheckedChanged" />
</Triggers>
<ContentTemplate>
//Get checked items
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
由于CheckBox转发器内的控件在设计时不可用,因此应使用ScriptManager.RegisterAsyncPostBackControl方法注册它们.此方法需要ScriptManager页面或母版页.
为Repeater.OnItemCreated事件创建一个处理程序并在那里注册新创建的CheckBox.代码如下(注意CheckBox应该将AutoPostBack属性设置为true):
<asp:Repeater ID="repSupplements" runat="server"
OnItemCreated="repSupplements_ItemCreated">
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbxSupplement" AutoPostBack="True" />
</ItemTemplate>
</asp:Repeater>
<asp:UpdatePanel runat="server" ID="up1">
<Triggers>
</Triggers>
<ContentTemplate>
//Get checked items
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
protected void repSupplements_ItemCreated(object sender, RepeaterItemEventArgs e)
{
var control = e.Item.FindControl("cbxSupplement");
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(control);
}
Run Code Online (Sandbox Code Playgroud)
这应该做你想要的.
| 归档时间: |
|
| 查看次数: |
6142 次 |
| 最近记录: |