控制添加回發問題
回答
在頁面初始化事件中添加控件,並在回發時將它們保存在視圖狀態中。確保他們有一個唯一的ID。
請參閱此鏈接...
ASP.NET Add Control on postback
一個非常簡單的例子..
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
}
}
因爲你必須重新在每個回發的控件, see this article
好吧,我可以保留在ViewState博客中嗎?我希望當我添加一個控件時,它必須在每個回發中。如果我重新創建所有控件,我將丟失控件的信息和用戶輸入的其他信息(如控件中的文本框)。 那麼解決方案是什麼? – atromgame 2010-01-11 14:36:16
加載控制後,應該始終在其ID屬性分配一個唯一的ID的用戶控件。你應該總是在回發時重新創建UserControl。
要保存posback數據(即TextBox'es),必須在調用base.LoadViewState之後,在處理回發數據之前,在overriden LoadViewState方法中加載UserControl。
好的,但我可以保留在ViewState博客?我希望當我添加一個控件時,它必須在每個回發中。如果我重新創建所有控件,我將丟失控件的信息和用戶輸入的其他信息(如控件中的文本框)。那麼解決方案是什麼? – atromgame 2010-01-11 14:37:36
我已經更新了我的答案。 – 2010-01-11 14:49:38
添加控件在運行時間和節省回傳:
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");
}
- 1. Web用戶控制回發問題
- 2. UITableView在iphone中添加控制問題
- 3. 問題與「添加控制器」,MVC 4
- 4. 添加系列圖表控制在運行時asp.net(因爲回發問題)
- 5. FileUpload控件回發問題
- 6. 控制加載問題
- 7. SVN回購訪問控制問題
- 8. 重新添加一個控制到控件集合問題
- 9. 控制問題
- 10. asp回發問題和html控件
- 11. Asp.NET用戶控件回發問題
- 12. MVC3中reportviewer控件的回發問題
- 13. 添加控件在回發中丟失
- 14. 動態添加控件不做回發
- 15. ASP.NET在回發中添加控件
- 16. 回發後使用JuiceUI滑塊控制問題
- 17. Asp.net文件上傳控制回發的問題
- 18. 有問題的異步回發後呈現的用戶控制
- 19. 回發問題
- 20. 控制SVN訪問只能添加,不能修改一次添加SVN回購
- 21. 在回發中以編程方式添加訪問控件
- 22. 問題發佈視圖控制器
- 23. Chrome開發者控制檯問題
- 24. android開發者控制檯問題
- 25. 添加用戶控件的WPF問題
- 26. 按鈕點擊動態加載用戶控件,回發問題
- 27. 問題將導航控制器添加到MainWindow Xcode 4
- 28. VS2010控制檯應用程序添加參考問題
- 29. 將自定義屬性添加到常見控制問題
- 30. WCF版本控制 - 添加新的operationContract會導致問題?
你如何添加你的控件是在CreateChildControls事件上嗎?你能提供一些示例代碼嗎? – Sheff 2010-01-11 14:10:11
Control _obj = LoadControl(「HaberObje.ascx」); String _Link = _row [「link」]。ToString(); String _Resim =「resim.png」; ((HaberObje)_obj).SetInfo(_row [「baslik」]。ToString) pnlHaber.Controls.Add(_obj); //這裏我添加控制 但是當Postback執行時我丟失了所有包含的控件 – atromgame 2010-01-11 14:24:02