データベースに と の 2 つのテーブルがQuestion
ありAnswers
ます。1 つの質問は、その性質として 1 つ以上の回答を取得します。回答テキストボックスを動的に追加しようとしていました。ユーザーは、希望する回答をいくつでも追加できます。これには div でパネルを使用しました。div1 は panel1 を取得し、div2 は panel2 を取得します。
パネルには、動的に追加した TextBoxes があり、txtAnswer1 や txtAnswer2 のような数値で ID を指定しました。送信ボタンを押すと、このtxtboxesをオンにして値を取得したいのですが、どうすればよいですか?
このリンクソリューションを試しましたが、できませんでした。
http://learning2code.net/Learn/2009/8/12/Adding-Controls-to-an-ASPNET-form-Dynamically.aspx
これはデザイン ビューです。
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtCount" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" />
</div>
<div style="border: medium solid #000000;">
<asp:Panel ID="pnlAns" runat="server"></asp:Panel>
</div>
<div style="border: medium solid #000099;">
<asp:Panel ID="pnlJ" runat="server"></asp:Panel>
</div>
<div style="border: medium solid #000000;">
<asp:Panel ID="pnlA" runat="server"></asp:Panel>
</div>
<div>
<asp:Button ID="btnGetValues" runat="server" Text="Get Values" OnClick="btnGetValues_Click" />
<br />
<asp:Label ID="lblValues" runat="server" />
</div>
</form>
これは背後にあるコードです:
protected void btnAdd_Click(object sender, EventArgs e)
{
int count = Convert.ToInt32(txtCount.Text);
for (int i = 0; i < count; i++)
{
TextBox txt = new TextBox { ID = "txtAns" + i.ToString() };
pnlAns.Controls.Add(txt);
TextBox txtA = new TextBox { ID = "txtPoint" + i.ToString() };
pnlA.Controls.Add(txtA);
TextBox txtJ = new TextBox { ID = "txtOther" + i.ToString() };
pnlJ.Controls.Add(txtJ);
}
}
私のコード コントロールで入力を追加します。
ボタンクリックで入力値を取得したいと思います。
protected void btnGetValues_Click(object sender, EventArgs e)
{
}
私の質問はどうですか?
ご覧のとおり、3 つのパネルと 3 つの異なるテキスト ボックスがあります。それは私が見つけようとするところです。
パネル配列にパネルを追加しようとしましたが、まだテキストボックスの値を取得できません。:(
protected void btnGetValues_Click(object sender, EventArgs e)
{
Panel[] pnls = new Panel[3] { pnlAns, pnlA, pnlJ };
foreach (Panel pnlIn in pnls)
{
lblValues.Text = pnlIn.Controls.ToString();
}
}
何が悪いのかわかりませんが、追加ボタンを押すとテキストボックスを追加できますが、それらは単なる html テキストボックスです。つまり、彼らはそう<input name="txtOther0" type="text" id="txtOther0" />
です。コード例外処理を実行しようとすると、 foreach ループから追い出されます。入力にサーバータグがないと思います。これが問題の場合、どうすれば「runat="server"」にすることができますか?
テキストボックスの値ViewStateを追加する必要がありますか?