0
私はhtmlgenericコントロールを持っています。実行時にコントロールを追加していますが、ボタンをクリックすると追加されたコントロールが消えます。ポストバックのhtmlgenericコントロールでasp.netのchilderenコントロールを削除します。なぜですか?
私はhtmlgenericコントロールを持っています。実行時にコントロールを追加していますが、ボタンをクリックすると追加されたコントロールが消えます。ポストバックのhtmlgenericコントロールでasp.netのchilderenコントロールを削除します。なぜですか?
すべてのポストバックに動的に作成されたコントロールを作成する必要があります。 ViewStateを保守して復元する場合は、IDを付与する必要があります。例えば
、これはTextBox
にページがロードされる最初の時間が表示されますが、どのsubsiquentページがロードに、制御が失われます。
protected void Page_Init(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox newControl = new TextBox()
{
ID = "newControl"
};
SomeControl.Controls.Add(newControl);
}
}
しかし、あなたはすべてのポストバックのコントロールを作成する場合それはテキストだと同じIDで、その後、制御が維持されます。
protected void Page_Init(object sender, EventArgs e)
{
TextBox newControl = new TextBox()
{
ID = "newControl"
};
SomeControl.Controls.Add(newControl);
}
ここdynamic controlsを扱う程度の良い品です。
page_initで静的なコントロールのように自動作成されるように再作成することをお勧めします(あなたの言ったようにIDが一致する場合) – davidsleeps
@davidsleeps - あなたは正しいです。回答が更新されました。 – GenericTypeTea