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- async-postback

于 2012-12-06T22:34:26.793 に答える
0

解決策は、RadioButtonからGroupNameを削除することでした。このタグを削除すると、非同期で起動し、パネルを更新するだけです。クリックイベント内でグループ化を処理するため(つまり、他のリピーターアイテムで同じ名前の他のラジオボタンのチェックを外す)、実際にはこのタグは必要ありません(GroupNameがリピーターのラジオボタンで機能しないという既知のバグのため) 。

于 2012-12-07T09:28:17.880 に答える
0

output.Text = DateTime.Now.ToString() の後に up1.Update() を追加してください。RadioButton は updatepanel のトリガーではありません

于 2012-12-06T21:27:21.953 に答える