0

次のようないくつかの設定が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);を使用してレンダリングする必要があることを理解しています。または同様のものですが、私はそれを理解することはできません。

4

2 に答える 2

2

テーブルを作成して、作業中のページに追加してみてください。以下の例を使用して、テキストボックスをラジオボタンに置​​き換えることができます。

次に例を示します。

 //Creat the Table and Add it to the Page
            Table table = new Table();
            table.ID = "Table1";
            Page.Form.Controls.Add(table);
            // Now iterate through the table and add your controls 
            for (int i = 0; i < rowsCount; i++)
            {
                TableRow row = new TableRow();
                for (int j = 0; j < colsCount; j++)
                {
                    TableCell cell = new TableCell();
                    TextBox tb = new TextBox();

                    // Set a unique ID for each TextBox added
                    tb.ID = "TextBoxRow_" + i + "Col_" + j;

                    // Add the control to the TableCell
                    cell.Controls.Add(tb);
                    // Add the TableCell to the TableRow
                    row.Cells.Add(cell);
                }
                // Add the TableRow to the Table
                table.Rows.Add(row);
            }
于 2012-10-07T09:52:15.467 に答える
1

これは、asp.netの存続期間全体にわたってユーザーコントロールを実行し、文字列として取得することで頻繁に行います。

http://www.diaryofaninja.com/blog/2009/09/14/a-simple-solution-to-viewing-a-preview-of-any-page-in-your-site

このようにして、ASP.Netをあらゆるもののテンプレートエンジンとして使用できます。

Page tempPage = new Page();
UserControl myUserControl = new MyUserControl();
tempPage.Controls.Add(myUserControl);


StringWriter sw = new StringWriter();
HttpContext.Current.Server.Execute(tempPage, sw, false);
if (!String.IsNullOrEmpty(sw.ToString()))
{
    return sw.ToString();
}
于 2012-10-07T10:00:50.663 に答える