コントロールを動的に追加しますが、; easc ポストバック イベント コントロールがなくなりました。私は自分のコントロールを再び見ることができません。
では、どうすればコントロールを追加できますか?
ポストバックごとにコントロールを再作成する必要があるため、 この記事を参照してください
コントロールがロードされた後は、IDプロパティでUserControlに常に一意のIDを割り当てる必要があります。また、ポストバック時に常にUserControlを再作成する必要があります。
posbackデータ(つまりTextBox)を保持するには、base.LoadViewStateを呼び出した後、ポストバックデータが処理される前に、オーバーライドされたLoadViewStateメソッドでUserControlをロードする必要があります。
実行時にコントロールを追加し、ポストバックで保存します。
int NumberOfControls = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["b1"] = 0;
}
else
{
if ((int)ViewState["b1"] > 0)
{
CreateBtn();
}
}
}
protected void btn1_Click(object sender, EventArgs e)
{
NumberOfControls = (int)ViewState["b1"];
Button b1 = new Button();
// b1.Attributes.Add("onclick", "x()");
b1.Text = "test2";
b1.ID = "b1_" + ++NumberOfControls;
b1.Click +=new System.EventHandler(btn11);
Panel1.Controls.Add(b1);
ViewState["b1"] = NumberOfControls;
}
protected void CreateBtn()
{
for (int i = 0; i < (int)ViewState["b1"];i++)
{
Button b1 = new Button();
// b1.Attributes.Add("onclick", "x()");
b1.Text = "test2";
b1.ID = "b1_" + i;
b1.Click += new System.EventHandler(btn11);
Panel1.Controls.Add(b1);
}
}
protected void btn11(object sender, System.EventArgs e)
{
Response.Redirect("AboutUs.aspx");
}
ページの Init イベントにコントロールを追加すると、ポストバック時にビューステートに保持されます。一意の ID を持っていることを確認してください。
このリンクを参照してください...
非常に些細な例..
public partial class MyPage : Page
{
TextBox tb;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
tb = new TextBox();
tb.ID = "testtb";
Page.Form.Controls.Add(tb);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//tb.Text will have whatever text the user entered upon postback
}
}