2016-08-03 13 views
0

Dropdown-Box Auswahl zeigt Textfelder in C#

<div class="row500"> 
 
    <span class="cell200"> 
 
    <asp:DropDownList ID="ddlCollision" runat="server" Height="28px" Width="354px" Style="font-size: 18px" OnSelectedIndexChanged="ddlCollision_SelectedIndexChanged" AutoPostBack="True"> 
 
     
 
<asp:ListItem Value="0"></asp:ListItem> 
 
<asp:ListItem Value="1">Cars</asp:ListItem> 
 
<asp:ListItem Value="2">People</asp:ListItem> 
 
    </asp:DropDownList> 
 
</span> 
 
</div> 
 

 
<br/> 
 
<div class="row500" id="fixedObject" runat="server"> 
 
    <span class="cell200"> 
 
    <asp:Label ID="lblFixed" runat="server" Text="Car Label:"> </asp:Label> 
 
      </span> 
 
      <br /> 
 
     
 
    <span class="cell200"> 
 
    <asp:TextBox ID="TextBox9" runat="server">  </asp:TextBox>  
 
    </span> 
 
    </div>

ich zur Zeit auf einer asp.net C# Homepage arbeite, die ein Dropdown-Liste enthält etwa 5 Listenelemente mit Werten von 0-4 hat. Jedes Mal, wenn ein Benutzer eines der Elemente auswählt, soll die Nummer der Anzahl der Textfelder entsprechen, die angezeigt werden. Also, wenn ein Benutzer "2" aus der Dropdown-Liste auswählt, muss ich divs anzeigen/ausblenden, die die Textfelder enthalten und 2 Textfelder erscheinen lassen .. Eine Hilfe dabei wäre toll !!!!

Mein Versuch: -Code unter Dropdown-Liste

protected void ddlCollision_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddlCollision.SelectedValue == "1") 
     fixedObject.Visible = true; 
    else 
     fixedObject.Visible = false; 
} 

festen Gegenstand ist die ID des div, die die Textbox

+1

Sie Ihr Versuch Dieser Beitrag sollte! – Adam

+0

@adam ich habe es gerade bearbeitet! – Bibby

+0

Haben Sie 'AutoPostBack =" true "' für Ihre DropDownList gesetzt? – ConnorsFan

Antwort

0

enthält Sie auch Textfelder dynamisch basierend auf der Integer-Zählung hinzufügen können, die ausgewählt wird aus Ihrer Dropdown-Liste. Dann für die count Anzahl, wird es laufen und hinzufügen, dass viele Textfelder.

protected void ddlOptions_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    for (int loopcnt = 1; loopcnt <= Convert.ToInt32(ddlOptions.SelectedValue.Trim()); loopcnt++) 
    { 
     TextBox tb = new TextBox(); 
     tb.ID = "tb" + loopcnt; 
     ctrlPlaceholder.Controls.Add(tb); 
    } 
} 

<div> 
 
    Question: 
 
    <asp:TextBox ID="txtQuestion" runat="server"></asp:TextBox> 
 
    <br /> 
 
    <br />Number of Options: 
 
    <asp:DropDownList ID="ddlOptions" runat="server" AutoPostBack="true" onselectedindexchanged="ddlOptions_SelectedIndexChanged"> 
 
    <asp:ListItem Value="1">1</asp:ListItem> 
 
    <asp:ListItem Value="2">2</asp:ListItem> 
 
    <asp:ListItem Value="3">3</asp:ListItem> 
 
    <asp:ListItem Value="4">4</asp:ListItem> 
 
    <asp:ListItem Value="5">5</asp:ListItem> 
 
    <asp:ListItem Value="6">6</asp:ListItem> 
 
    </asp:DropDownList> 
 
    <br /> 
 
    <br />Options: 
 
    <asp:PlaceHolder runat="server" ID="ctrlPlaceholder"></asp:PlaceHolder> 
 
</div>

+0

Ich möchte, dass die Textfelder vertikal ausgerichtet werden, dies geschieht horizontal! Wie kann ich das machen? @Maheswari – Bibby

+0

Fügen Sie die Textfelder der dynamischen Tabelle hinzu und fügen Sie schließlich die Tabelle dem Platzhalter hinzu. Hier ist der Code – Maheswari

0

protected void ddlOptions_SelectedIndexChanged (object sender, EventArgs e) {

 Int32 pickedValue = Int32.Parse(ddlOptions.SelectedValue); 

      Table table = new Table(); 


      for (int i = 1; i <= pickedValue; i++) 
      { 

       TableRow row = new TableRow(); 
       TableCell cell = new TableCell(); 
       cell.Attributes.Add("runat", "server"); 

       TextBox txt_splzn = new TextBox(); 

       txt_splzn.ID = "txtB" + i.ToString(); 
       txt_splzn.Text = "Text Number " + i.ToString(); 

       cell.Controls.Add(txt_splzn); 

       row.Cells.Add(cell); 
       table.Rows.Add(row); 
       ctrlPlaceholder.Controls.Add(table); 
      } 
     } 

}