0

コード ビハインドから HTML 入力チェック ボックスを動的に作成しました。チェック ボックスを aspx ページにレンダリングした後、ボタン クリック イベントでこれらのチェック ボックスのチェック済みプロパティを取得できません。week は、すべての曜日を含む列挙型です。サンプルコードはこちら。

HtmlInputCheckBox chkbx = new HtmlInputCheckBox();
chkbx.Attributes.Add("id", ((week)i).ToString());
chkbx.Attributes.Add("runat", "server");
chkbx.Attributes.Add("name", ((week)i).ToString());
chkbx.Attributes.Add("value", "checked");

HtmlGenericControl label = new HtmlGenericControl("label");
label.Attributes.Add("for", ((week)i).ToString());
if (i == 1 || i == 7)
{
    label.Attributes.Add("class", "dow disabled");
    label.Attributes.Add("disabled", "true");
}
else
{
    label.Attributes.Add("class", "dow");
    chkbx.Checked = true;                    
}
label.InnerText = ((week)i).ToString().Substring(0,2);
_dowcontrol.Controls.Add(chkbx);
_dowcontrol.Controls.Add(label);

ASPXページ

<body>
    <form id="form1" runat="server" method = "post">
        <t2:mycontrol ID="SampleControl" runat="server" >
        </t2:mycontrol>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </form>
</body>

ASPX.CS ページ ボタン クリックの内側には何が必要ですか?

試した

Request.Form["***"], FindControl("***")
4

1 に答える 1

0

動的に作成されたコントロールがビューステート、イベント、およびページ ライフサイクルのその他の段階と対話するには、それらをInitイベントで作成する必要があります。ライフ サイクルの後半でこれらのコントロールを作成すると、ポスト値バインディング、ビューステート バインディングなどから除外されます。また、すべてのポストバックでコントロールを再作成する必要があることに注意してください。

protected void Page_Init(object sender, EventArgs e)
{
    // Do any dynamic control re/creation here.
}
于 2013-07-24T05:25:58.560 に答える