2013-09-30 69 views
0

我想在用戶控件加載從數據庫值asp.net - 如何從用戶控件中的數據庫加載值?

我可以添加更多的用戶的控制,但我cant't能夠在用戶控件加載值

代碼:

Add.aspx.cs

下面的代碼是用於將一個以上的用戶的控制,並保留先前控制值

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); 
    } 

ë dit.aspx.cs

下面的代碼在用戶控件加載值從數據庫

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()) 
    { 
    //Here I can get values 
     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(); 

     for (int i = 0; i < y; i++) 
     { 
     VisaUserControl userconrol = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx"); 
     userconrol.TextVisaNumber = visaNumb; 
     userconrol.VisaCountry = visaCountry; 
     userconrol.VisaType = visaType; 
     userconrol.VisaEntry = visaEntry; 
     userconrol.ExpiryDate = expiryDate; 

     repeater1.Controls.Add(userconrol); 
     } 
    } 
    } 

.ascx.cs

這裏的值是有,但,當它加載的所有值將被刪除

protected void Page_Load(object sender, EventArgs e) 
{ 
txtUser.Text = Request.Form[txtUser.UniqueID]; 
dropCountry.SelectedValue = Request.Form[dropCountry.UniqueID]; 
dropVisa.SelectedValue = Request.Form[dropVisa.UniqueID]; 
dropEntry.SelectedValue = Request.Form[dropEntry.UniqueID]; 
txtDate.Text = Request.Form[txtDate.UniqueID]; 
} 

public string TextVisaNumber 
{ 
    get { return txtUser.Text; } 
    set { txtUser.Text = value; } 
} 

public string VisaCountry 
{ 
get { return dropCountry.SelectedValue; } 
set { dropCountry.SelectedValue = value; } 
} 

public string VisaType 
{ 
get { return dropVisa.SelectedValue; } 
set { dropVisa.SelectedValue = value; } 
} 

public string VisaEntry 
{ 
get { return dropEntry.SelectedValue; } 
set { dropEntry.SelectedValue = value; } 
} 

public string ExpiryDate 
{ 
    get 
    { 
    return txtDate.Text; 
    } 
    set 
    { 
    txtDate.Text = value; 
    } 
} 

任何想法?在此先感謝

回答

0

而不是在頁面的控件集合中添加控件,您應該保留一些現有控件的內部HTML中設置數據。

+0

你能舉個例子嗎? – user2500094

相關問題