1

ページがあります (MS Ajax を使用)。他のオプションによっては、パネル内にラジオ ボタン リストを作成する必要がある場合があります。これは、以下のように行われます。

 RadioButtonList rbl = new RadioButtonList();
    rbl.SelectedIndexChanged += new EventHandler(answer_Click);
    rbl.AutoPostBack = true;

    foreach (KeyValuePair<string, int> d in _answers)
    {
        ListItem li = new ListItem(d.Key.ToString(), d.Key.ToString());
        li.Attributes.Add("class", "radio");            
        rbl.Items.Add(li);
    }
    p.Controls.Add(rbl);

ポストバック後に別の RadioButton リストが必要でない限り、これは正常に機能します。リストはすべて正しいオプションで正しく描画されますが、最初にオプションをクリックすると、入力されてからリセットされます。SelectedIndexChanged イベントを設定してトリガーするには、2 回目のクリックが必要です。

answer_Click がトリガーされると、rbl を破棄して再作成します (作成される次の質問には異なる回答とオプションがあるため、これはわかっています)。

では、なぜ 2 番目のリストを 2 回クリックする必要があるのか​​についてのアイデアはありますか?

4

1 に答える 1

1

マット!

ViewState に問題があるようです。コントロールは LoadViewState トリガーの後に作成されるため、ブラウザーから値を取得して読み込むことはありません。この値をどこかに保存し、JS、ViewState、QueryString、Session、DB を使用して状態を永続化し、選択した値をそれぞれにロードする必要があります。

これがお役に立てば幸いです。ASP.NET Page Life Cycleの詳細については、こちらをご覧ください。

于 2013-05-20T17:38:15.913 に答える