在asp.net C#创建动态复选框,单选按钮
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?
这样的基本想法是建立一个动态的页面,在那里我可以添加尽可能多的控制,我可以只用点击一个按钮。控件可以重复。
Panel 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);
}
,首先让我知道什么是博士? 相同的代码适用于我。我所做的是我创建一个名为博士的小组,然后添加CbxList到面板即博士
这里是代码
*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;*
这是我们添加chkbox的面板。当我只添加chkbox时,它也适用于我,但在我的情况下,我需要在同一面板中添加chkboxes单选按钮文本框等。在这种情况下它不起作用。 – Faizan
你可以在这里分享你的代码,这样我可以得到更好的主意吗? –
请看看上面的代码。这对我有用。我想所以缺少的是将控件添加到面板。 –
你为什么不保证其真实性呢? – Mahdi
我想制作一个完整的动态表单,为此我需要添加所有控件,一些控件允许我使用真实状态,有些使用错误状态。 – Faizan