2013-09-26 5 views
0

나는 사용자 제어 값을 읽는 방법?

내가 시도했지만 루프 밖으로

코드를 제공 사용자 컨트롤

에서 값을 얻으려면 :

에서 .aspx

<asp:Repeater ID="rpt1" runat="server"> 
<ItemTemplate> 
</ItemTemplate> 
</asp:Repeater> 
<asp:Button ID="btnSaveVisa" Text="Save" runat="server" OnClick="btnSaveVisa_Click" /> 

AddVisaUserControl.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AddVisaControl.ascx.cs" EnableViewState="false" Inherits="Pyramid.AddVisaControl" %> 
<div id="divreg" runat="server"> 
<table id="tbl" runat="server"> 
    <tr> 
    <td> 
     <asp:Label ID="lbl2" runat="server"></asp:Label> 
    </td> 
</tr> 
<tr> 
<td> Visa Number:</td> 
<td><asp:TextBox ID="txtUser" Width="160px" runat="server"/></td> 
<td> Country Name:</td> 
<td><asp:DropDownList ID="dropCountry" Width="165px" runat="server"></asp:DropDownList></td> 
</tr> 
<tr> 
<td> Type of Visa:</td> 
<td><asp:DropDownList ID="dropVisa" Width="165px" runat="server"></asp:DropDownList></td> 
<td> Type of Entry:</td> 
<td><asp:DropDownList ID="dropEntry" Width="165px" runat="server"></asp:DropDownList></td> 
</tr> 
<tr> 
<td> Expiry Date</td> 
<td> 

</td> 
</tr> 
</table> 
</div> 

. aspx.cs

public void generateControls() 
    { 
     for (int i = 0; i < int.Parse(ViewState["ControlCount"].ToString()); i++) 
     { 
      Label lbl = new Label(); 
      string count = Convert.ToString(i + 1); 
      lbl.Text = "Visa" + count; 
      rpt1.Controls.Add(lbl); 
      rpt1.Controls.Add(LoadControl("VisaUserControl.ascx")); 
      rpt1.Controls.Add(new LiteralControl("<BR>")); 
     } 
    } 
    protected void btnAddVisa_Click(object sender, EventArgs e) 
    { 
     ViewState["ControlCount"] = int.Parse(ViewState["ControlCount"].ToString()) + 1; 
     generateControls(); 
    } 

// 내가 루프 밖으로

private void saveData() 
    { 
     for (int i = 0; i < this.rpt1.Controls.Count; i++) 
     { 
      if (this.rpt1.Controls[i] is TextBox) 
      { 
       TextBox txtserial = (TextBox)this.rpt1.Controls[i]; 
       string value = txtserial.Text; 
      } 
     } 
    } 

    protected void btnSaveVisa_Click(object sender, EventArgs e) 
    { 
     saveData(); 
    } 

enter image description here

어떤 아이디어를 제공 컨트롤에서 값을 읽을 때 여기에 문제가? 미리 감사드립니다.

+0

그래서 usercontrol을 동적으로 추가하고 값을 가져 와서 저장 하시겠습니까? – KrishnaDhungana

+0

예, 동적으로 추가했지만 값을 가져 와서 저장하려고합니다. – user2500094

답변

1
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) 
     { 
      var ctrl = (AddVisaUserControl)LoadControl(@"AddVisaUserControl.ascx"); 
      ctrl.ID = i; 
      this.AddVisaPlaceHolder.Controls.Add(ctrl); // Add in placeholder 
     } 
    } 

    //Adding controls to Place Holder 
    protected void AddButton_Click(object sender, EventArgs e) 
    { 

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

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

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

    //Save 
    protected void Save_Click(object sender, EventArgs e) 
    { 

     foreach (var control in AddVisaPlaceHolder.Controls) 
     { 
      var usercontrol = control as AddVisaUserControl; 

      //you can access properties from usercontrol 

      //Implement save logic here 
     } 

    } 
+0

고마워요. 정상적으로 작동합니다. – user2500094

+0

처음에는 어떻게해야 하나의 레코드를 보여줄 수 있습니까? – user2500094

+0

코드 뒤에 usercontrol을 추가하여 하나의 레코드를 동적으로 추가하거나 aspx 페이지에 사용자 정의 컨트롤을 등록하여 추가 할 수 있습니다. – KrishnaDhungana