0

項目 (1 から 4 までの数字) を含むドロップダウン リストがある単純なアプリケーションを作成してみてください。

ユーザーが選択した数に応じて、この数のチェックボックスをバインドされたcheckchangedイベントで動的に作成します。したがって、ユーザーがいくつかのチェックボックスをチェックすると、checkedchanged イベントが発生し、チェックされたチェックボックスのテキストがセッションに保存され、ボタンをクリックすると、チェックされたチェックボックスのテキストのみが表示されます。

しかし、checkchanged イベント ハンドラーで動的コントロールを再作成する必要があるようですが、解決策は見つかりませんでした。前もって感謝します。

public partial class proba : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        dd1.Items.Add("1");
        dd1.Items.Add("2");
        dd1.Items.Add("3");
        dd1.Items.Add("4");
}

protected void dd1_SelectedIndexChanged1(object sender, EventArgs e)
{
    int numTourists = Convert.ToInt32(dd1.SelectedItem.Text);

    for (int i = 0; i < numTourists; i++)
    {
        CheckBox chk = new CheckBox();
        chk.ID = "chk" + i;
        chk.Text = "box" + i;

         chk.AutoPostBack = true;

        chk.CheckedChanged += new EventHandler(checkChanged);
        Page.FindControl("form1").Controls.Add(chk);


    }
}

protected void checkChanged(object sender, EventArgs e)
{
     // here I should recteate the control

    CheckBox chk = (CheckBox)sender;

    lblpr.Text += chk.Text;

    Srolession["chk"] = chk.Text;


}
4

1 に答える 1

1
     static bool chkddlchange=false; //define this....to check you Drop Changed Or Not.
    protected void Page_Load(object sender, EventArgs e)
        {
            dd1.Items.Add("1");
            dd1.Items.Add("2");
            dd1.Items.Add("3");
            dd1.Items.Add("4");
    if(Page.IsPostBack && chkddl==true)
    {
     int numTourists = Convert.ToInt32(dd1.SelectedItem.Text);
       chkddl=true;//make true so you can know that you ddlindex is changed..
        for (int i = 0; i < numTourists; i++)
        {
            CheckBox chk = new CheckBox();
            chk.ID = "chk" + i;
            chk.Text = "box" + i;

             chk.AutoPostBack = true;

            chk.CheckedChanged += new EventHandler(checkChanged);
            Page.FindControl("form1").Controls.Add(chk);


        }
    }
    }

    protected void dd1_SelectedIndexChanged1(object sender, EventArgs e)
    {
        int numTourists = Convert.ToInt32(dd1.SelectedItem.Text);
       chkddl=true;//make true so you can know that you ddlindex is changed..you have to 
checkboxex on page load
        for (int i = 0; i < numTourists; i++)
        {
            CheckBox chk = new CheckBox();
            chk.ID = "chk" + i;
            chk.Text = "box" + i;

             chk.AutoPostBack = true;

            chk.CheckedChanged += new EventHandler(checkChanged);
            Page.FindControl("form1").Controls.Add(chk);


        }
    }
于 2013-05-18T12:49:21.373 に答える