两种实现方式:
1. 通过后台动态添加空间,也就是你说的点击button生成textbox(在UpdatePanel中做,这样局部刷新!)
我给你写了一个方法,你看看,我试过了,可以生成!
///
/// 动态生成textbox的方法
///
/// 生成textbox的个数
private void CreateTextBoxList(int num)
{
HtmlGenericControl div; // 动态生成的div
TextBox txtNumber; // 动态生成textbox
RequiredFieldValidator rfv; // 为这个textbox生成验证,验证数据
for (int i = 0; i < num; i++) {
// 创建div
div = new HtmlGenericControl();
div.TagName = "div";
div.ID = "divTextBox" + i.ToString();
// 创建textbox
txtNumber = new TextBox();
txtNumber.ID = "txtNumber" + i.ToString();
//创建格式验证控件,并将其关联到相应的textbox
rfv = new RequiredFieldValidator();
rfv.ID = "rfv" + i.ToString();
rfv.ControlToValidate = txtNumber.ID;
rfv.Display = ValidatorDisplay.Dynamic;
rfv.ValidationGroup = "ShowListContent";
rfv.ErrorMessage = "不能为空";
//添加控件到容器
div.Controls.Add(txtNumber);
div.Controls.Add(rfv);
DivPanel.Controls.Add(div); // 前台创建一个名字为id为DivPanel的服务器端div
}
}
2. 前台的方法,通过Javascript,这样较为简单,而且效果较好。我用JQuery写了一个生成
$(function(){
var num = 5; // 生成的个数
for ( var i=0; i
var inp= document.createElement("input");
inp.setAttribute("id","txtName"+i);
inp.setAttribute("value","whh");
document.body.appendChild(inp);
}
})
前台只是简单的写了下,其实要做的话最好是在前台做,这样实现效果好不说,而且可以做很多事情!推荐用这种方法!
如果不用js做,点一次按钮,就提交一次页面,如果网速慢,用户是不会忍受的
而且来回传递的ViewState也很大,浪费网络流量,增加服务器负担
用js在前台做吧,提交后,根据提交的某个参数,来保持Textbox的数量
用js写吧,这样效果好得多
并且用户体验也会好很多,比较主流
怎么可能只生成1个对象?,还有什么叫“回送”求解释