2012-04-02 8 views
1

Ich möchte 5 Textfelder erstellen, die auf Dropdown erstellt werden, ausgewählte Indexänderung und 4 Textfelder, die erstellt werden, wenn der Dropdown-Index 4 ist. Dropdown ist innerhalb von asp.net updatepanel. Es gibt auch einen Button innerhalb des Update-Panels. Wenn der Benutzer auf diese Schaltfläche klickt, wird alles, was in Textfeldern eingegeben ist, auf dem Etikett angezeigt.dynamische Textfelder im Dropdown-Menü selectedindex

Bitte schlagen Sie mir Lösung vor.

Antwort

0

Mai dieses Werk

<div> 

</div><asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:Panel ID="Panel1" runat="server"> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" 
     onselectedindexchanged="DropDownList1_SelectedIndexChanged"><asp:ListItem Value="1">one </asp:ListItem><asp:ListItem Value="2">Two </asp:ListItem><asp:ListItem Value="3">Three </asp:ListItem><asp:ListItem Value="4">Four</asp:ListItem> 
    </asp:DropDownList> 
<br /> 
    <asp:Button ID="Button2" runat="server" Text="fectchText" onclick="Button2_Click" /> 
    <br /> 

    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
    <br /> 
    <br /> 
    <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 
</ContentTemplate> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     if (ViewState["mode"].ToString() == "1") 
      createTextbox(); 
     ViewState.Add("mode", "1"); 
    } 
    else 
    { 
     ViewState.Add("mode", "0"); 
    } 
} 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    createTextbox(); 
} 

public void createTextbox() 
{ 
    int noOftextbox = Convert.ToInt32(DropDownList1.SelectedItem.Value); 
    for (int i = 0; i < noOftextbox; i++) 
    { 
     TextBox txtbox = new TextBox(); 
     txtbox.ID = "txt" + i; 
     txtbox.Visible = true; 
     txtbox.Height = 30; 
     txtbox.Width = 100; 
     UpdatePanel1.ContentTemplateContainer.Controls.Add(txtbox); 
     PlaceHolder1.Controls.Add(txtbox); 
    } 
} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    int nocount= Convert.ToInt32(DropDownList1.SelectedItem.Value); 
    for (int count = 0; count <= nocount-1 ; count++) 
    { 
    TextBox txtRead = (TextBox)PlaceHolder1.FindControl("txt" + (count)); 
    Label1.Text += txtRead.Text+"-"; 
    } 

} 
0

du versuchen .....

for (int i = 0; i < ddlTest.SelectedIndex; i++) 
    { 
     TextBox txt = new TextBox(); 
     txt.ID = "txt" + i.ToString(); 
     PlaceHolder1.Controls.Add(txt); 
    } 

ändern ddlTest.SelectedIndex in Ihre Loop Zustand .....

+0

Wie kann ich auf die Werte zugreifen, die der Benutzer in diese Textfelder eingeben wird, und auch auf diese Steuerelemente (Dropdownliste an d dynamische Textboxen) müssen in Ajax updatepanel sein – DotnetSparrow

0

Hers die Lösung erstellen txtbox innerhalb Update

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:Panel ID="Panel1" runat="server"> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="False"> 
<asp:ListItem Value="1">one </asp:ListItem><asp:ListItem Value="2">Two </asp:ListItem><asp:ListItem Value="3">Three </asp:ListItem><asp:ListItem Value="4">Four</asp:ListItem> 


    </asp:DropDownList> 
<br /> 
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
</ContentTemplate> 



</asp:UpdatePanel> 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int noOftextbox =Convert.ToInt32(DropDownList1.SelectedItem.Value); 

    for (int i = 0; i < noOftextbox; i++) 
    { 
     TextBox txtbox = new TextBox(); 
     txtbox.ID = i.ToString(); 
     txtbox.Visible = true; 
     txtbox.Height = 30; 
     txtbox.Width = 100; 
     txtbox.Text = "txt" + i.ToString(); 
     PlaceHolder1.Controls.Add(txtbox); 
     //UpdatePanel1.Controls.Add(txtbox); 
     //UpdatePanel1.Controls.Add(new LiteralControl("<br/>")); 
    } 

} 
+0

Vielen Dank für Ihre Antwort. Wie bekomme ich die Werte, die der Benutzer eingeben wird? – DotnetSparrow

+0

Wert innerhalb des txt eingeben (Laufzeit erstellt) auf Label ?? –

+0

Ich meine Benutzer wird alles in diesen dynamischen Textfeldern eingeben, und es wird eine andere Schaltfläche und ein Label geben. Benutzer kann auf diese Schaltfläche und Werte Typen in diesen dynamischen Textfeldern sollte auf der Bezeichnung – DotnetSparrow

0

Sie Kann man das versuchen ...

//Add Control into Panel 
    for (int i = 0; i < 5; i++) 
    { 
     TextBox txt = new TextBox(); 
     txt.ID = "txt" + i.ToString(); 
     txt.Text = "this is text:" + i.ToString(); 
     pnlTest.Controls.Add(txt); 
    } 

    //Fetch Value from Panel 
    for (int i = 0; i < pnlTest.Controls.Count; i++) 
    { 
     string val = ((TextBox)pnlTest.Controls[i]).Text; 
    } 

Erste Schleife für die dynamische Steuerung in Panel und eine weitere Schleife hinzufügen, für Abrufwert von Steuer ....

+0

Hallo Manoj: Es funktioniert nicht in updatepanel, da updatepanel Postbacks stoppt – DotnetSparrow

+0

Hi ... Bitte versuchen sollte daran arbeiten, weil ich es auch getan habe Meine Bewerbung ... Sie können dort etwas verpassen. –

+0

Hallo MAnoj: Es funktioniert nicht innerhalb Updatepanel :( – DotnetSparrow