Mmargar-0Medlem sedan nov. 200362 inlägg Jag undrar hur man på ett enkelt sätt kan styra hur mångtex textboxar man vill visa.
Exempel:
Jag håller på med en poll och varje gång som lägger upp en ny fråga så varierar ju antalet svarsalternativ. Det jag vill är att när jag väljer antalet svaralternativ till frågan så ska lika många textboxar visas.
Hur ska jag ladda in dessa dynamiskt beroende på antalet svarsalternativ?
på aspx sidan
<asp:dropdownlist id="ddlAnswers" runat="server" autopostback="True">
<asp:listitem>1</asp:listitem>
<asp:listitem>2</asp:listitem>
<asp:listitem>3</asp:listitem>
<asp:listitem>4</asp:listitem>
<asp:listitem>5</asp:listitem>
</asp:dropdownlist>
<asp:placeholder id="plhAnswers" runat="server" />
codebehind
Private Sub ddlAnswers_selectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlAnswers.SelectedIndexChanged
Dim i As Integer
For i = 1 To ddlAnswers.SelectedItem.Value
Dim tb As New TextBox()
tb.ID = "tbAnswer" & i
tb.Width = Unit.Pixel(250)
tb.MaxLength = "200"
plhAnswers.Controls.Add(tb)
plhAnswers.Controls.Add(New LiteralControl("<br>"))
Next
End Sub
DDinoMedlem sedan sep. 20011 914 inlägg Annat sätt.
.aspx
<asp:textbox id="tbAmount" runat="server" />
<asp:button id="btAmount" text="Ok" runat="server" />
<asp:button id="btGet" runat="server" text="Get" />
<asp:repeater id="repData" runat="server">
<headertemplate>
<table>
</headertemplate>
<itemtemplate>
<tr>
<td><asp:textbox id="tbGrr" runat="server" /></td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
<br/>
<asp:label id="lbGet" runat="server" />
.aspx.cs
private void btAmount_Click(object sender, System.EventArgs e)
{
string[] s = new string[int.Parse(tbAmount.Text)];
repData.DataSource = s;
repData.DataBind();
}
private void btGet_Click(object sender, System.EventArgs e)
{
foreach(RepeaterItem ri in repData.Items)
{
if(ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
{
lbGet.Text += string.Format("{0}<br/>",((TextBox)ri.FindControl("tbGrr")).Text);
}
}
}