UpdatePanel中Repeater内的RadioButtonList导致完全回发

时间:2013-04-23 09:36:57

标签: c# asp.net updatepanel repeater autopostback

我有一个AutoBostBack = true的RadioButtonList,它位于Repeater中。整个Repeater被更新面板包围。但是,RadioButtonList导致发生完整的回发。

我尝试过其他场景,其中UpdatePanel也在转发器中,但仍然会遇到同样的问题。

以下代码显示了该问题。

第一个单选按钮位于更新面板之外,应该会导致完整的回发。这可以正常工作。

第二个单选按钮位于自己的更新面板中,应该导致部分回发。这可以正常工作。

第三个单选按钮位于更新面板内的Repeater中。这应该会导致部分回发,但是,它会导致完整的回发。

第四个单选按钮位于Repeater内的更新面板中。这也应该导致prtial回发,但是,它会导致完整的回发。

<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            rptTest1.DataSource = Enumerable.Range(1, 1);
            rptTest1.DataBind();

            rptTest2.DataSource = Enumerable.Range(1, 1);
            rptTest2.DataBind();
        }
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="script1" EnablePartialRendering="true" runat="server" />

    Date1: <%=System.DateTime.Now.ToString() %>
    <asp:RadioButtonList ID="rbl1" AutoPostBack="true" runat="server">
        <asp:ListItem>a</asp:ListItem>
        <asp:ListItem>b</asp:ListItem>
        <asp:ListItem>c</asp:ListItem>
    </asp:RadioButtonList>
    <br /><br />

    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>

            Date2: <%=System.DateTime.Now.ToString() %>
            <asp:RadioButtonList ID="rbl2" AutoPostBack="true" runat="server">
                <asp:ListItem>a</asp:ListItem>
                <asp:ListItem>b</asp:ListItem>
                <asp:ListItem>c</asp:ListItem>
            </asp:RadioButtonList>
            <br /><br />
        </ContentTemplate>
    </asp:UpdatePanel>

    <asp:UpdatePanel runat="server" id="upd1" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Repeater ID="rptTest1" runat="server">
                <ItemTemplate>
                    Date3: <%=System.DateTime.Now.ToString() %>
                    <asp:RadioButtonList ID="rbl3" AutoPostBack="true" runat="server">
                        <asp:ListItem>a</asp:ListItem>
                        <asp:ListItem>b</asp:ListItem>
                        <asp:ListItem>c</asp:ListItem>
                    </asp:RadioButtonList>
                    <br /><br />
                </ItemTemplate>
            </asp:Repeater>
        </ContentTemplate>
    </asp:UpdatePanel>

    <asp:Repeater ID="rptTest2" runat="server">
        <ItemTemplate>
            <asp:UpdatePanel runat="server" id="upd2" UpdateMode="Conditional">
                <ContentTemplate>
                    Date4: <%=System.DateTime.Now.ToString() %>
                    <asp:RadioButtonList ID="rbl4" AutoPostBack="true" runat="server">
                        <asp:ListItem>a</asp:ListItem>
                        <asp:ListItem>b</asp:ListItem>
                        <asp:ListItem>c</asp:ListItem>
                    </asp:RadioButtonList>
                    <br /><br />
                </ContentTemplate>
            </asp:UpdatePanel>
        </ItemTemplate>
    </asp:Repeater>

    </div>
    </form>
</body>
</html>

我需要找到一种在转发器中使用AutoPostBack RadioButton的方法,因为页面本身很大并且导致的回发导致最终用户大量闪烁,因此不会导致完全回发。

0 个答案:

没有答案