次のようないくつかの設定がweb.configに保存されています。
<add key="Answers" value="radiobutton1,radiobutton2,radiobutton3"/>
Radiobutton1、radiobutton2、およびradiobutton3は、ラジオボタンのラベル値です。
settings.csには、web.configから値を取得する関数があります。
public static string Answers
{
get
{
return System.Configuration.ConfigurationManager.AppSettings["Answers"];
}
}
.ascxファイル:
<table runat="server" OnPreRender="Radio_PreRender" id="table1" name="table1">
</table>
私のascx.csファイルには次の関数が含まれています。
protected void Radio_PreRender(object sender, EventArgs e)
{
if (Settings.Answers != "")
{
int counter = 0;
string a = Settings.Answers;
string[] words = a.Split(',');
StringWriter stringwriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(stringwriter);
foreach (string word in words)
{
writer.WriteBeginTag("tr");
writer.WriteBeginTag("td");
writer.Write("abc123");
RadioButton rdb1 = new RadioButton();
rdb1.Checked = true;
rdb1.GroupName = "rdbgroup";
rdb1.ID = "radiobutton" + counter;
rdb1.Text = word;
table1.Controls.Add(rdb1 );
writer.WriteEndTag("td");
writer.WriteBeginTag("tr");
table1.Render(writer);
counter++;
}
}
}
つまり、table1内にこのコードの動的な番号を生成したいと思います。
<tr>
<td>
// input type="radiobutton" and label go here.
</td>
</tr>
現時点では、ラジオボタンは子要素をテーブルに直接配置できないため、生成されません。代わりにdivを指定すると、ラジオボタンが生成されますが、HtmlTextWriterで書き込もうとするものはすべて生成されません。私のhtmlはtable1.Render(writer);を使用してレンダリングする必要があることを理解しています。または同様のものですが、私はそれを理解することはできません。