在asp.net c#中创建动态复选框和单选按钮

本文关键字:动态 复选框 单选按钮 创建 asp net | 更新日期: 2023-09-27 17:58:28

Basically I am creating a full dynamic form which has text boxes, check boxes, etc.
When I try to add this code in a page where `EnableViewState="false"` it doesn't work but it works fine on a page where `EnableViewState="true"`. 
But I want it to work on this (`EnableViewState="false"`) page. How do I do this?

这样做的基本想法是创建一个动态页面,我只需点击一个按钮就可以在上面添加尽可能多的控件。控件可以重复
面板pnlTextBox;受保护的void Page_PreInit(对象发送方,EventArgs e({

            //Create a Dynamic Panel
            pnlTextBox = new Panel();
            pnlTextBox.ID = "pnlTextBox";
            pnlTextBox.BorderWidth = 1;
            pnlTextBox.Width = 300;
            this.form1.Controls.Add(pnlTextBox);
            //Create a LinkDynamic Button to Add TextBoxes
            //Recreate Controls
            RecreateTextBoxControls("txtDynamic", "TextBox");
            RecreateDDLControls("ddlDynamic", "DropDownList");
    }
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnAdd_Click(object sender, EventArgs e)
   {
    //  /*  int i=Convert.ToInt32(DropDown1.SelectedValue.ToString());
    //    if (i == 1)
    //    {*/
          int cnt = FindOccurence("txtDynamic");
    CreateTextBox("txtDynamic-" + Convert.ToString(cnt + 1));
    //  /*  }
    //    else if (i == 2)
    //    {
    //        int cnt = FindOccurence("ddlDynamic");
    //        CreateDropDownList("ddlDynamic-" + Convert.ToString(cnt + 1));
    //    }
    //    else if (i == 3)
    //    {
    //    }
    //    else if (i == 4)
    //    {
    //    }
    //    else if (i == 5)
    //    {
    //    }
    //    else if (i == 6)
    //    {
    //    }
    //    else
    //    {
    //        Console.Write("Bawa ji ka thullu");
    //    }
    //    */
    }
    private int FindOccurence(string substr)
    {
        string reqstr = Request.Form.ToString();
        return ((reqstr.Length - reqstr.Replace(substr, "").Length) /                                                                                                                                                        ....substr.Length);
    }
    private void RecreateTextBoxControls(string ctrlPrefix, string ctrlType)
    {
        string[] ctrls = Request.Form.ToString().Split('&');
        int cnt = FindOccurence(ctrlPrefix);
        if (cnt > 0)
        {
            for (int k = 1; k <= cnt; k++)
            {
                for (int i = 0; i < ctrls.Length; i++)
                {
                    if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()) &&                                                    
                    !ctrls[i].Contains("EVENTTARGET"))
                      {
                        string ctrlID = ctrls[i].Split('=')[0];
                        if (ctrlType == "TextBox")
                        {
                            CreateTextBox(ctrlID);
                        }
                        break;
                    }
                }
            }
        }
      }
      private void RecreateDDLControls(string ctrlPrefix, string ctrlType)
      {
        string[] ctrls = Request.Form.ToString().Split('&');
        int cnt = FindOccurence(ctrlPrefix);
        if (cnt > 0)
        {
            for (int k = 1; k <= cnt; k++)
            {
                for (int i = 0; i < ctrls.Length; i++)
                {
                    if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()) && 
                   !ctrls[i].Contains("EVENTTARGET"))
                    {
                        string ctrlID = ctrls[i].Split('=')[0];
                        if (ctrlType == "DropDownList")
                        {
                            CreateDropDownList(ctrlID);
                        }
                        break;
                    }
                }
            }
        }
    }
    private void CreateDropDownList(string ID)
    {
        DropDownList ddl = new DropDownList();
        ddl.ID = ID;
        ddl.Items.Add(new ListItem("--Select--", ""));
        ddl.Items.Add(new ListItem("One", "1"));
        ddl.Items.Add(new ListItem("Two", "2"));
        ddl.Items.Add(new ListItem("Three", "3"));
        ddl.AutoPostBack = true;
        ddl.SelectedIndexChanged += new EventHandler(OnSelectedIndexChanged);
        pnlTextBox.Controls.Add(ddl);
        Literal lt = new Literal();
        lt.Text = "<br />";
        pnlTextBox.Controls.Add(lt);
    }
    private void CreateTextBox(string ID)
    {
        TextBox txt = new TextBox();
        txt.ID = ID;
        txt.AutoPostBack = true;
        txt.TextChanged += new EventHandler(OnTextChanged);
        pnlTextBox.Controls.Add(txt);
        Literal lt = new Literal();
        lt.Text = "<br />";
        pnlTextBox.Controls.Add(lt);
    }

在asp.net c#中创建动态复选框和单选按钮

首先让我知道Ph是什么?同样的代码也适用于我。我所做的是创建了一个名为Ph的面板,然后将CbxList添加到该面板中,即Ph

这是代码

*CheckBoxList CbxList = new CheckBoxList();
    TextBox txtBox = new TextBox();
    RadioButtonList rbList = new RadioButtonList();
    rbList.Items.Add("First Radio Button List");
    rbList.Items.Add("Second Radio Button List");
    rbList.Items.Add("Third Radio Button List");
    rbList.Items.Add("Fourth Radio Button List");
    rbList.Items.Add("Fifth Radio Button List");
    RadioButton rbTest = new RadioButton();
    rbTest.Text = "Simple Radio Button";
    txtBox.Text = "Simple Text Box";
    CbxList.ID = "Cbx";
    for (int i = 0; i < intCount; i++)
    {
        CbxList.Items.Add(new ListItem(Convert.ToChar(i + 65).ToString(), Convert.ToChar(i + 65).ToString()));
    }
    //Adding controls to Panel
    ph.Controls.Add(rbTest);
    ph.Controls.Add(CbxList);
    ph.Controls.Add(rbList);
    ph.Controls.Add(txtBox);
    ViewState["ListCreated"] = false;*