page_Load方法中的:
if (ViewState["count"] != null) //若视图状态不为空,则重新加载动态控件
{
for (int i = 1; i <= Convert.ToInt16(ViewState["count"]); i++)
{
AddFamily();
}
}
根据输入信息的不同动态添加表格(根据输入的家庭成员数进行表格的生成):
protected void NumofFamTextBox_TextChanged(object sender, EventArgs e)
{
int numofFam = Convert.ToInt16(this.NumofFamTextBox.Text.Trim()); //得到家庭成员数 Response.Write("原有行数" + table1.Rows.Count);
//删除table1中现有的信息
for (int i = 1; i < table1.Rows.Count; i++)
{
this.table1.Rows.RemoveAt(i);
}
ViewState["count"] = 0; //视图状态中的值清零
//根据家庭成员数添加表格 for (int j = 1; j < numofFam; j++)
{
AddFamily();
ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 1; //viewstate 的值加一
}
}往表格中添加一行:
//添加一行家庭成员表格
protected void AddFamily()
{
TableRow tr = new TableRow(); //初始化表格的一行
//初始化表格的各列
TableCell tc1 = new TableCell();
TableCell tc2 = new TableCell();
TableCell tc3 = new TableCell();
TableCell tc4 = new TableCell();
TableCell tc5 = new TableCell();
TableCell tc6 = new TableCell();
TableCell tc7 = new TableCell();
//定义使用的控件
TextBox relationTextBox = new TextBox();
TextBox nameTextBox = new TextBox();
DropDownList sexDropDownList = new DropDownList();
TextBox yearTextBox = new TextBox();
RegularExpressionValidator yearValidator = new RegularExpressionValidator();
DropDownList monthDropDownList = new DropDownList();
DropDownList dayDropDownList = new DropDownList();
TextBox workTextBox = new TextBox();
TextBox idTextBox = new TextBox();
RegularExpressionValidator idValidator = new RegularExpressionValidator();
CheckBoxList gulaoCheckBoxList = new CheckBoxList();
LinkButton deleteButton = new LinkButton();
//添加家庭成员关系控件并初始化
relationTextBox.ID = "relationTextBox" + table1.Rows.Count;
relationTextBox.Width = Convert.ToUInt16("60");
//添加家庭成员姓名控件并初始化
nameTextBox.ID = "nameTextBox" + table1.Rows.Count;
nameTextBox.Width = Convert.ToUInt16("60");
//添加家庭成员性别控件并初始化
sexDropDownList.ID = "sexDropDownList" + table1.Rows.Count;
sexDropDownList.Items.Add("男");
sexDropDownList.Items.Add("女");
//添加家庭成员生日控件并初始化
//年份控件
yearTextBox.ID = "yearTextBox" + table1.Rows.Count;
yearTextBox.Width = Convert.ToUInt16("35");
yearTextBox.ToolTip = "年份必须填写为4位";
//年份验证控件
yearValidator.ID = "yearValidator" + table1.Rows.Count;
yearValidator.ControlToValidate = "yearTextBox" + table1.Rows.Count;
yearValidator.SetFocusOnError = true;
yearValidator.ValidationExpression = @"\d{4}$";
yearValidator.ErrorMessage = "“年份”格式不准确";
yearValidator.Text = "*";
//月份控件
monthDropDownList.ID = "monthDropDownList" + table1.Rows.Count;
monthDropDownList.Items.Add("01");
monthDropDownList.Items.Add("02");
monthDropDownList.Items.Add("03");
monthDropDownList.Items.Add("04");
monthDropDownList.Items.Add("05");
monthDropDownList.Items.Add("06");
monthDropDownList.Items.Add("07");
monthDropDownList.Items.Add("08");
monthDropDownList.Items.Add("09");
monthDropDownList.Items.Add("10");
monthDropDownList.Items.Add("11");
monthDropDownList.Items.Add("12");
//日期控件
dayDropDownList.ID = "dayDropDownList" + table1.Rows.Count;
dayDropDownList.Items.Add("01");
dayDropDownList.Items.Add("02");
dayDropDownList.Items.Add("03");
dayDropDownList.Items.Add("04");
dayDropDownList.Items.Add("05");
dayDropDownList.Items.Add("06");
dayDropDownList.Items.Add("07");
dayDropDownList.Items.Add("08");
dayDropDownList.Items.Add("09");
dayDropDownList.Items.Add("10");
dayDropDownList.Items.Add("11");
dayDropDownList.Items.Add("12");
dayDropDownList.Items.Add("13");
dayDropDownList.Items.Add("14");
dayDropDownList.Items.Add("15");
dayDropDownList.Items.Add("16");
dayDropDownList.Items.Add("17");
dayDropDownList.Items.Add("18");
dayDropDownList.Items.Add("19");
dayDropDownList.Items.Add("20");
dayDropDownList.Items.Add("21");
dayDropDownList.Items.Add("22");
dayDropDownList.Items.Add("23");
dayDropDownList.Items.Add("24");
dayDropDownList.Items.Add("25");
dayDropDownList.Items.Add("26");
dayDropDownList.Items.Add("27");
dayDropDownList.Items.Add("28");
dayDropDownList.Items.Add("29");
dayDropDownList.Items.Add("30");
dayDropDownList.Items.Add("31");
//添加家庭成员工作单位控件并初始化
workTextBox.ID = "workTextBox" + table1.Rows.Count;
workTextBox.Width = Convert.ToUInt16("125");
//添加家庭成员身份证控件并初始化
idTextBox.ID = "idTextBox" + table1.Rows.Count;
idTextBox.Width = Convert.ToUInt16("130");
//添加家庭成员身份证号码验证控件并初始化
idValidator.ID = "idValidator" + table1.Rows.Count;
idValidator.ControlToValidate = "idTextBox" + table1.Rows.Count;
idValidator.SetFocusOnError = true;
idValidator.ValidationExpression = @"\d{17}[\d|X]|\d{15}$";
idValidator.ErrorMessage = "家庭成员“身份证号”格式不准确";
idValidator.Text = "*";
//添加家庭成员孤老情况控件并初始化
gulaoCheckBoxList.ID = "gulaoCheckBoxList" + table1.Rows.Count;
gulaoCheckBoxList.RepeatColumns = Convert.ToUInt16("2");
gulaoCheckBoxList.Items.Add("孤老");
gulaoCheckBoxList.Items.Add("大病");
gulaoCheckBoxList.Items.Add("年老");
gulaoCheckBoxList.Items.Add("残疾"); //向各列添加相应控件
tc1.Controls.Add(relationTextBox);
tc2.Controls.Add(nameTextBox);
tc3.Controls.Add(sexDropDownList);
tc4.Controls.Add(yearTextBox);
tc4.Controls.Add(yearValidator);
tc4.Controls.Add(new LiteralControl("年"));
tc4.Controls.Add(monthDropDownList);
tc4.Controls.Add(new LiteralControl("月"));
tc4.Controls.Add(dayDropDownList);
tc4.Controls.Add(new LiteralControl("日"));
tc5.Controls.Add(workTextBox);
tc6.Controls.Add(idTextBox);
tc6.Controls.Add(idValidator);
tc7.Controls.Add(gulaoCheckBoxList);
//向一行中加入各列
tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tr.Cells.Add(tc3);
tr.Cells.Add(tc4);
tr.Cells.Add(tc5);
tr.Cells.Add(tc6);
tr.Cells.Add(tc7);
//向表格中添加一行
table1.Rows.Add(tr);
}
上述代码中可以实现首次输入家庭成员数添加相应行数的表格,但是当输入的家庭成员数再次改变时会出现”添加了多个相同id控件“的错误,这是为什么呢?希望高手指点,谢谢,在线急等! Thankyou
if (ViewState["count"] != null) //若视图状态不为空,则重新加载动态控件
{
for (int i = 1; i <= Convert.ToInt16(ViewState["count"]); i++)
{
AddFamily();
}
}
根据输入信息的不同动态添加表格(根据输入的家庭成员数进行表格的生成):
protected void NumofFamTextBox_TextChanged(object sender, EventArgs e)
{
int numofFam = Convert.ToInt16(this.NumofFamTextBox.Text.Trim()); //得到家庭成员数 Response.Write("原有行数" + table1.Rows.Count);
//删除table1中现有的信息
for (int i = 1; i < table1.Rows.Count; i++)
{
this.table1.Rows.RemoveAt(i);
}
ViewState["count"] = 0; //视图状态中的值清零
//根据家庭成员数添加表格 for (int j = 1; j < numofFam; j++)
{
AddFamily();
ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 1; //viewstate 的值加一
}
}往表格中添加一行:
//添加一行家庭成员表格
protected void AddFamily()
{
TableRow tr = new TableRow(); //初始化表格的一行
//初始化表格的各列
TableCell tc1 = new TableCell();
TableCell tc2 = new TableCell();
TableCell tc3 = new TableCell();
TableCell tc4 = new TableCell();
TableCell tc5 = new TableCell();
TableCell tc6 = new TableCell();
TableCell tc7 = new TableCell();
//定义使用的控件
TextBox relationTextBox = new TextBox();
TextBox nameTextBox = new TextBox();
DropDownList sexDropDownList = new DropDownList();
TextBox yearTextBox = new TextBox();
RegularExpressionValidator yearValidator = new RegularExpressionValidator();
DropDownList monthDropDownList = new DropDownList();
DropDownList dayDropDownList = new DropDownList();
TextBox workTextBox = new TextBox();
TextBox idTextBox = new TextBox();
RegularExpressionValidator idValidator = new RegularExpressionValidator();
CheckBoxList gulaoCheckBoxList = new CheckBoxList();
LinkButton deleteButton = new LinkButton();
//添加家庭成员关系控件并初始化
relationTextBox.ID = "relationTextBox" + table1.Rows.Count;
relationTextBox.Width = Convert.ToUInt16("60");
//添加家庭成员姓名控件并初始化
nameTextBox.ID = "nameTextBox" + table1.Rows.Count;
nameTextBox.Width = Convert.ToUInt16("60");
//添加家庭成员性别控件并初始化
sexDropDownList.ID = "sexDropDownList" + table1.Rows.Count;
sexDropDownList.Items.Add("男");
sexDropDownList.Items.Add("女");
//添加家庭成员生日控件并初始化
//年份控件
yearTextBox.ID = "yearTextBox" + table1.Rows.Count;
yearTextBox.Width = Convert.ToUInt16("35");
yearTextBox.ToolTip = "年份必须填写为4位";
//年份验证控件
yearValidator.ID = "yearValidator" + table1.Rows.Count;
yearValidator.ControlToValidate = "yearTextBox" + table1.Rows.Count;
yearValidator.SetFocusOnError = true;
yearValidator.ValidationExpression = @"\d{4}$";
yearValidator.ErrorMessage = "“年份”格式不准确";
yearValidator.Text = "*";
//月份控件
monthDropDownList.ID = "monthDropDownList" + table1.Rows.Count;
monthDropDownList.Items.Add("01");
monthDropDownList.Items.Add("02");
monthDropDownList.Items.Add("03");
monthDropDownList.Items.Add("04");
monthDropDownList.Items.Add("05");
monthDropDownList.Items.Add("06");
monthDropDownList.Items.Add("07");
monthDropDownList.Items.Add("08");
monthDropDownList.Items.Add("09");
monthDropDownList.Items.Add("10");
monthDropDownList.Items.Add("11");
monthDropDownList.Items.Add("12");
//日期控件
dayDropDownList.ID = "dayDropDownList" + table1.Rows.Count;
dayDropDownList.Items.Add("01");
dayDropDownList.Items.Add("02");
dayDropDownList.Items.Add("03");
dayDropDownList.Items.Add("04");
dayDropDownList.Items.Add("05");
dayDropDownList.Items.Add("06");
dayDropDownList.Items.Add("07");
dayDropDownList.Items.Add("08");
dayDropDownList.Items.Add("09");
dayDropDownList.Items.Add("10");
dayDropDownList.Items.Add("11");
dayDropDownList.Items.Add("12");
dayDropDownList.Items.Add("13");
dayDropDownList.Items.Add("14");
dayDropDownList.Items.Add("15");
dayDropDownList.Items.Add("16");
dayDropDownList.Items.Add("17");
dayDropDownList.Items.Add("18");
dayDropDownList.Items.Add("19");
dayDropDownList.Items.Add("20");
dayDropDownList.Items.Add("21");
dayDropDownList.Items.Add("22");
dayDropDownList.Items.Add("23");
dayDropDownList.Items.Add("24");
dayDropDownList.Items.Add("25");
dayDropDownList.Items.Add("26");
dayDropDownList.Items.Add("27");
dayDropDownList.Items.Add("28");
dayDropDownList.Items.Add("29");
dayDropDownList.Items.Add("30");
dayDropDownList.Items.Add("31");
//添加家庭成员工作单位控件并初始化
workTextBox.ID = "workTextBox" + table1.Rows.Count;
workTextBox.Width = Convert.ToUInt16("125");
//添加家庭成员身份证控件并初始化
idTextBox.ID = "idTextBox" + table1.Rows.Count;
idTextBox.Width = Convert.ToUInt16("130");
//添加家庭成员身份证号码验证控件并初始化
idValidator.ID = "idValidator" + table1.Rows.Count;
idValidator.ControlToValidate = "idTextBox" + table1.Rows.Count;
idValidator.SetFocusOnError = true;
idValidator.ValidationExpression = @"\d{17}[\d|X]|\d{15}$";
idValidator.ErrorMessage = "家庭成员“身份证号”格式不准确";
idValidator.Text = "*";
//添加家庭成员孤老情况控件并初始化
gulaoCheckBoxList.ID = "gulaoCheckBoxList" + table1.Rows.Count;
gulaoCheckBoxList.RepeatColumns = Convert.ToUInt16("2");
gulaoCheckBoxList.Items.Add("孤老");
gulaoCheckBoxList.Items.Add("大病");
gulaoCheckBoxList.Items.Add("年老");
gulaoCheckBoxList.Items.Add("残疾"); //向各列添加相应控件
tc1.Controls.Add(relationTextBox);
tc2.Controls.Add(nameTextBox);
tc3.Controls.Add(sexDropDownList);
tc4.Controls.Add(yearTextBox);
tc4.Controls.Add(yearValidator);
tc4.Controls.Add(new LiteralControl("年"));
tc4.Controls.Add(monthDropDownList);
tc4.Controls.Add(new LiteralControl("月"));
tc4.Controls.Add(dayDropDownList);
tc4.Controls.Add(new LiteralControl("日"));
tc5.Controls.Add(workTextBox);
tc6.Controls.Add(idTextBox);
tc6.Controls.Add(idValidator);
tc7.Controls.Add(gulaoCheckBoxList);
//向一行中加入各列
tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tr.Cells.Add(tc3);
tr.Cells.Add(tc4);
tr.Cells.Add(tc5);
tr.Cells.Add(tc6);
tr.Cells.Add(tc7);
//向表格中添加一行
table1.Rows.Add(tr);
}
上述代码中可以实现首次输入家庭成员数添加相应行数的表格,但是当输入的家庭成员数再次改变时会出现”添加了多个相同id控件“的错误,这是为什么呢?希望高手指点,谢谢,在线急等! Thankyou
解决方案 »
- WinForm中ComboBox如何根据值(ValueMember的值)定位SelectedIndex
- 大哥们,帮我看看这段代码
- 1 gridview 把指定列的编辑模式为下拉列表,2 把gridview导出为excel
- ASP.NET打印问题,各位给点建议 都用水晶报表?哪里有Crystal Report 10.0下载哦?
- 请问下大家,对网站测试一般有哪些方法?大家常使用哪些测试工具?
- 导入发生错误,提示是在位置 141 处没有任何行?
- fckeditor2 关于上传图片数量的问题,因为我在显示这条新闻的时候想知道它包不包含图片,包含几个.一下没有解决.希望大家给予帮助.
- 2级域名解析的调用,急,求大神。
- 如何能在新打开的页面窗口关闭后,取得其中的某个值
- 请问怎样在ASP,NET实现进度条,急用。可惜csdn的搜索不能用,谢谢帮忙!
- 怎么获取GirdView的当前页的所有行吗?
- 发布网站遇到的问题
TableRow tr = new TableRow(); //初始化表格的一行
//初始化表格的各列
TableCell tc1 = new TableCell();
TableCell tc2 = new TableCell();
TableCell tc3 = new TableCell();
TableCell tc4 = new TableCell();
TableCell tc5 = new TableCell();
TableCell tc6 = new TableCell();
TableCell tc7 = new TableCell(); 第二次添加的时候,又是重新生成一次表格!
{
this.table1.Rows.RemoveAt(i);
}
ViewState["count"] = 0; //视图状态中的值清零
每次输入信息改变后都删除了啊??
是不是我的程序就是错的啊?有没有哪位xdjm有好的方式赐予小妹下,谢谢哦!
if (ViewState["count"] != null) //若视图状态不为空,则重新加载动态控件
{
for (int i = 1; i <= Convert.ToInt16(ViewState["count"]); i++)
{
AddFamily();
}
} 这个有没有放if( !this.IsPostBack)里面?
没放的话,就每次按添加按纽就执行两次for (int i = 1; i <= Convert.ToInt16(ViewState["count"]); i++)
{
AddFamily();
}
protected void NumofFamTextBox_TextChanged(object sender, EventArgs e)
但是如果不在pageload中重载,提交表单后得不到动态添加的这些控件信息啊!不是这样子吗??
{
int numofFam = Convert.ToInt16(this.NumofFamTextBox.Text.Trim()); //得到家庭成员数 Response.Write("原有行数" + table1.Rows.Count);
//删除table1中现有的信息
for (int i = 1; i < table1.Rows.Count; i++)
{
this.table1.Rows.RemoveAt(i);
}
ViewState["count"] = 0; //视图状态中的值清零
//根据家庭成员数添加表格 for (int j = 1; j < numofFam; j++)
{
AddFamily();
ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 1; //viewstate 的值加一
}
}往表格中
那就把 只个事件里面的去掉!for (int j = 1; j < numofFam; j++)
{
AddFamily();
ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 1; //viewstate 的值加一
}
}往表格中要不你都是执行了两次!
//删除table1中现有的信息
for (int i = 1; i < table1.Rows.Count; i++)
{
this.table1.Rows.RemoveAt(i);
}
但是只是删除了第一行的信息,很是奇怪??、/希望有高手继续关注
后来就采用了 table1.clear()的方式就可以删除掉整个表格重新开始了。
我之前的表格是有个表头的,这次表头每次都要动态加了。