【发布时间】:2013-10-16 07:27:06
【问题描述】:
我需要根据用户响应生成动态文本框(最多 5-10 个)。那么,就性能和速度而言,最好的方法是什么。
【问题讨论】:
-
使用
jQuery/Javascript创建文本框并使用ajax发回此数据。或者使用ASP:UpdatePanel并异步发回。 -
谢谢你们..真的很有帮助
我需要根据用户响应生成动态文本框(最多 5-10 个)。那么,就性能和速度而言,最好的方法是什么。
【问题讨论】:
jQuery/Javascript 创建文本框并使用ajax 发回此数据。或者使用ASP:UpdatePanel并异步发回。
这是一个非常有用的链接并解释了原因
link from here
举例
protected void Page_PreInit(object sender, EventArgs e)
{
Control c= LoadControl("./WebUserControl2.ascx");
i=i+1;
c.ID= i.ToString();
PlaceHolder1.Controls.Add(c);
}
或
protected void Page_PreInit(object sender, EventArgs e)
{
LinkButton button1 = new LinkButton();
button1.ID = "button1"
button1.Text = "button1"
PlaceHolder1.Controls.Add(button1);
}
【讨论】:
int n=5;
for (int i=0;i<n;i++)
{
TextBox MyTextBox=new TextBox();
//Assigning the textbox ID name
MyTextBox.ID = "tb" +""+ ViewState["num"] + i;
MyTextBox.Width = 540;
MyTextBox.Height = 60;
MyTextBox.TextMode = TextBoxMode.MultiLine;
this.Controls.Add(MyTextBox);
}
对于 MVC,此链接可能对您有所帮助... http://www.codeproject.com/Articles/434886/Dynamically-adding-controls-on-a-hierarchical-stru
【讨论】:
试试这个方法
for (int j = 0; j < 10; j++)
{
//Create Dynamic textboxes with required field validator .
TextBox tbChildFirstName = new TextBox();
Label lblChildFirstName = new Label();
lblChildFirstName.ID = "lblChildFirstName" + j;
lblChildFirstName.Text = "Children FirstName";
lblChildFirstName.Width = 200;
lblChildFirstName.SkinID = "Outlabel";
tbChildFirstName.ID = "txtChildFirstName" + j;
tbChildFirstName.Text = "Hi hello";
pnlChildDetail.Controls.Add(lblChildFirstName);
pnlChildDetail.Controls.Add(tbChildFirstName);
RequiredFieldValidator rqf = new RequiredFieldValidator();
rqf.ID = "rqf" + i;
pnlChildDetail.Controls.Add(rqf);
rqf.ControlToValidate = "txtChildFirstName" + j;
rqf.ErrorMessage = "Children FirstName is required";
rqf.Display = ValidatorDisplay.Dynamic;
rqf.ValidationGroup = "EligibilityCheck";
rqf.SetFocusOnError = true;
rqf.Text = "*";
tbChildFirstName.Attributes.Add("runat", "server");
pnlChildDetail.Controls.Add(GetLiteral("<br/>"));
pnlChildDetail.Controls.Add(GetLiteral("<br/>"));
}
public Literal GetLiteral(string text)
{
Literal rv = default(Literal);
rv = new Literal();
rv.Text = text;
return rv;
}
aspx
<asp:Panel ID="pnlChildDetail" Style="text-align: left; padding-left: 10px" Width="100%"
runat="server">
</asp:Panel>
有关创建动态文本框表单数据库数据计数以及如何获取动态文本框值的更多详细信息?:请参阅我的blog
【讨论】: