1

テキストボックス、ラジオボタン、チェックボックス(すべてパネルにバインド)を含む動的コントロールのページがあります。

Page_init関数でcreatecontrol関数を実行します。

だから私は次のようなものを持っています:

    protected void Page_Init(object sender, EventArgs e)
    {
        PopulateControls();
    }

    protected void PopulateControls()
    {
        ....
        for (int j = 0; j < dt.Rows.Count; j++)
         {
          ...create dynamic controls
         }
        Panel1.Controls.Add(dynamic controls);

    }

ポストバック時に(たとえば、チェックボックスをオフにすると)、画面が一番上にジャンプします。

通常、動的コントロールを使用していないときは、各コントロールの周りにUpdatePanel/ContentTemplateを配置するだけです。しかし、今はそれができないので、ポストバックでページがトップにジャンプするのを防ぐ方法はありますか?

ありがとう!

4

2 に答える 2

3

コントロールをに動的に追加できますUpdatePanel。それらをに追加する必要がありContentTemplateContainer.Controlsます。

for (int j = 0; j < dt.Rows.Count; j++)
 {
  ...create dynamic controls
 }
UpdatePanel1.ContentTemplateContainer.Controls.Add(dynamic controls);
于 2013-03-24T22:56:58.090 に答える
2

あなたのコード

Panel1.Controls.Add(dynamic controls);

UpdatePanelではなくPanelを使用していることを示しています。Panelを使用するのと同じ方法でUpdatePanelを使用します。唯一の例外は、PanelではなくItemTemplateにコントロールを追加することです。Panelの場合はコンテナであるため、コントロールを直接保持しますが、UpdatePanelの場合は、プロパティまたはコントロールを含むのはContentTemplateContainerです。したがって、上記の行の代わりに以下のようなものを使用できます。

UpdatePanel1.ContentTemplateContainer.Controls.Add(button1);

複数のコントロールを作成する場合は、 forループの本体にこのコード行を含めるようにしてください。

お役に立てれば。

于 2013-03-24T23:06:43.513 に答える