0

我有一个中继器,其中每个项目中都包含一个单选按钮,并且整个站点都位于更新面板中。当我选择一个单选按钮时,整个页面都会重新加载。为什么不只是更新更新面板。我已将其简化为一个非常简单的示例,以避免混乱。代码在这里...

ASPX...

<asp:ScriptManager ID="SM1" runat="server" />
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Repeater runat="server" ID="history">
            <ItemTemplate>
                <asp:RadioButton runat="server" ID="radioButton" AutoPostBack="true" GroupName="HistoryGroup" OnCheckedChanged="RadioButton_CheckChanged" /><br />
            </ItemTemplate>
        </asp:Repeater>

        <p><asp:Literal runat="server" ID="output" /></p>
    </ContentTemplate>
</asp:UpdatePanel>

代码...

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            List<int> list = new List<int>();
            for (int i = 0; i < 20; i++)
                list.Add(i);
            history.DataSource = list.ToArray();
            history.DataBind();
        }
    }

    protected void RadioButton_CheckChanged(Object sender, EventArgs e)
    {
        output.Text = DateTime.Now.ToString();
    }
}
4

3 回答 3

3

在 RadioButton 上设置 ClientIDMode=Auto 应该可以修复它(这是一个臭名昭著的 .NET 错误,http://connect.microsoft.com/VisualStudio/feedback/details/584991/clientidmode-static-in-updatepanel-fails-to-do-异步回发

于 2012-12-06T22:34:26.793 回答
0

请在 output.Text = DateTime.Now.ToString() 之后添加 up1.Update()。您的 RadioButton 不是 updatepanel 的触发器

于 2012-12-06T21:27:21.953 回答
0

原来解决方案是从 RadioButton 中删除 GroupName。当我删除此标签时,它会异步触发并更新面板。我实际上并不需要这个标签(由于已知的错误,即 GroupName 在中继器中的 RadioButtons 上不起作用),因为我在单击事件中处理分组(即取消选中其他中继器项目中的任何其他同名 RadioButtons) .

于 2012-12-07T09:28:17.880 回答