2016-07-25 2 views
0
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? 

これを実行する基本的な考え方は、1つのボタンをクリックするだけで、できるだけ多くのコントロールを追加できる動的ページを作成することです。コントロールを繰り返すことができます。
パネルpnlTextBox; 保護された無効Page_PreInit(オブジェクト送信者、EventArgsの電子) {asp.netの動的チェックボックスとラジオボタンを作成するC#

  //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); 
    } 
+0

は、なぜあなたはそれが、その後真保管しないでされにCbxListを追加しました私は何をやったのですか? – Mahdi

+0

私は完全な動的フォームを作成したい、その目的のために私はすべてのコントロールを追加する必要があります、いくつかのコントロールは真の状態で私を許可し、いくつかは偽の状態で動作しています。 – Faizan

答えて

0

まず第一に、私は何Phである知っていますか? 同じコードが私のために働く。私は名前のpHのパネルを作成し、そのパネルすなわち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;* 
+0

これはchkboxを追加するパネルです。私はchkboxを追加するだけでも私のために働くが、私の場合はchkboxesラジオボタンのテキストボックスを同じパネルに追加する必要がある。この場合は動作しません。 – Faizan

+0

ここであなたのコードを分かち合い、私がより良いアイデアを得ることができますか? –

+0

上記のコードをご覧ください。これは私のために働く。私は、パネルにコントロールを追加することが欠けていると思います。 –

関連する問題