2013-10-01 11 views
0

我想保持在視圖狀態用戶控制值c# - 如何在從數據庫讀取時維護用戶控制中的值?

我嘗試,但值被除去

代碼:

在下面的代碼我從數據庫中讀出的值,並在用戶控件加載它,它的工作,但如果我想補充一個用戶控件時,單擊Add按鈕這些值將被刪除

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!IsPostBack) 
{ 
using (OleDbCommand cmd = new OleDbCommand("Select * from visa_details where emp_id = '" + empid + "'", DbConnection)) 
using (OleDbDataAdapter da = new OleDbDataAdapter(cmd)) 
{ 

    OleDbDataReader DR1 = cmd.ExecuteReader(); 
    while (DR1.Read()) 
    { 
    string visaNumb = DR1[2].ToString(); 
    string visaCountry = DR1[3].ToString(); 
    string visaType = DR1[4].ToString(); 
    string visaEntry = DR1[5].ToString(); 
    string expiryDate = DR1[6].ToString(); 
    expiryDate = DateTime.Parse(expiryDate).ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture); 

    VisaUserControl userconrol = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx"); 
    userconrol.TextVisaNumber = visaNumb; 
    userconrol.VisaCountry = visaCountry; 
    userconrol.VisaType = visaType; 
    userconrol.VisaEntry = visaEntry; 
    userconrol.ExpiryDate = expiryDate; 
    rpt1.Controls.Add(userconrol); 
    } 
    } 
} 
} 

下面的代碼添加用戶控件時,單擊Add按鈕

public List<string> NoOfControls 
    { 
     get 
     { 
      return ViewState["NoOfControls"] == null ? new List<string>() : (List<string>)ViewState["NoOfControls"]; 

     } 
     set 
     { 
      ViewState["NoOfControls"] = value; 
     } 

    } 


    protected override void LoadViewState(object savedState) 
    { 
     base.LoadViewState(savedState); 

     GenerateControls(); 
    } 



    private void GenerateControls() 
    { 
     foreach (string i in NoOfControls) 
     { 
      VisaUserControl ctrl = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx"); 

      ctrl.ID = i; 
      this.rpt1.Controls.Add(ctrl); 
     } 
    } 

    protected void btnAddVisa_Click(object sender, EventArgs e) 
    { 

     List<string> temp = null; 
     var uc = (VisaUserControl)this.LoadControl(@"VisaUserControl.ascx"); 

     string id = Guid.NewGuid().ToString(); 
     uc.ID = id; 

     temp = NoOfControls; 
     temp.Add(id); 
     NoOfControls = temp; 
     rpt1.Controls.Add(uc); 
    } 

在下面的圖片,如果我點擊添加更多按鈕簽證這些值和控制被刪除我想堅持這些價值觀

enter image description here

任何想法?在此先感謝

+1

你爲什麼問這個問題兩次? http://stackoverflow.com/questions/19108564/net-how-to-maintain-user-control-values-in-view-state –

+0

投票結束.. –

+0

@SonerGönül:我投了票關閉另一個: ) –

回答

0

事實是,當您單擊按鈕時,頁面會執行回發,因此條件中的Page_Load事件中的代碼部分不會執行。

這包括創建動態創建的VisaUserControl

+0

非常感謝你的回答 – user2148679

相關問題