webForumDet fria alternativet

Dynamiskt inladdade kontroller

.NETur .NET

2 svar · 650 visningar · startad av margar-0

Medlem sedan nov. 200362 inlägg
Frågan#1

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?

Medlem sedan jan. 20011 140 inlägg
#2

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
Medlem sedan sep. 20011 914 inlägg
#3

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);
                }
            }
        }
124 ms totalt · 3 externa anrop · v20260731065814-full.8a4e7caf
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)