0

次のような関数があります(簡略化):

private void showQuestions()
{
     for (int ansNum = 0; ansNum < 6; ansNum++)
     {
         RadioButton rb = new RadioButton();
         rb.ID = x + letterArray[randomArray[ansNum]].ToString();
         rb.GroupName = "answer" + x;
         rb.Text = char.ToUpper(letterArray[currentCount]) + ". " + dt.Rows[x - 1].ItemArray[2 + randomArray[ansNum]];
         fieldSet.Controls.Add(rb);
     }
}

IsPostBack でない場合は、pageLoad で showQuestions() を呼び出します。メソッドは実際にデータベースからの質問をランダム化し、ラジオ ボタンをフィールドセット コントロールに追加します。上記のコードには多くの根性が欠けています。

送信時に、これらのラジオ ボタンをページに残しておきたいのですが、削除されます。showQuestions() を再度呼び出す必要はありません。これにより、順序が混乱し、データベースに余分な時間がかかるためです。

[送信] をクリックしてその他の変更を行った後、ページにそれらを保持するにはどうすればよいですか?

4

1 に答える 1

1

毎回作成するメソッドを呼び出さないと、ポストバック後に動的に作成されたコントロールをページに保持できなくなります。UpdatePanelを使用してこれを実行することもできますが、http呼び出しを行うのは非常にコストがかかるため、とにかくサーバーでPage_Loadメソッドがヒットします。

ajax呼び出しを使用してデータを投稿することをお勧めします。フォームを送信すると、クライアント側のメソッドを呼び出すことができます。このメソッドは、a)フォームデータを表すjsonオブジェクトにデータを入力し、b)ajaxを使用してデータをサービスメソッドに送信します。

繰り返しになりますが、UpdatePanelも同様に機能しますが、私はそれを絶対に避けがちです。

于 2012-07-20T17:55:27.483 に答える