动态增加表格的数据读取问题? 有一个表格asp:Table,页面中,通过后台操作实现了增加行操作,每个行里有若干cell,每个cell里边或者有一个dropdownlist,或者是textbox等交互式控件。 麻烦在于,每次在动态表格中进行了交互操作(选择、录入)后,点击提交按钮后,页面直接刷新,这个过程中,前边增加的那些cell、交互式控件、row都丢掉了,更谈不上读取里边的数据了。 那么,我该怎么办? 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 添加行的那些代码放在(!ispostback)试试 JS生成的,除非你用AJAX不然是取不到的.要不就用后台动态添加,但是会增加服务器负担不建议用。 看看1楼的建议,另外,如果你在前端用js生成的新行,要后端能读取数据,需要用一个隐藏控件,然后自己定义一些标准,组装成一个字符串,也可以JSON之类的,后端就能读取了。 动态增加行,是在!base.ispostback里头做的,问题是,提交以后,还没有刚进入Page_Init函数,还没进行base.ispostback判断的时候,已经发现表格里边动态加入的东西都没有了....... 后台代码,其中,main_table是一个原来有2行的表格: private int maintable_Rownums = 1; protected void Page_Init(object sender, EventArgs e) { /********/ if (!base.IsPostBack) { AddTableRows(main_table, maintable_Rownums,12); } }protected void AddTableRows( Table table, int rowcounts, int cellcounts){ Unit lineheight=new Unit (100); for (int i = 0; i < rowcounts ; i++) { TableRow row = new TableRow(); row.Height = lineheight; for (int j = 0; j < cellcounts ; j++) { TableCell cell = new TableCell(); cell.BorderWidth = Unit.Pixel(1); cell.BorderColor = System.Drawing.Color.Black; cell.HorizontalAlign = HorizontalAlign.Center; switch (j) { case 0: cell.Text = (i + 1).ToString (); break ; case 1: DropDownList tmpdl = new DropDownList(); file.readsoncompany(tmpdl, Auth.getuserunit(this.Session["username"].ToString())); tmpdl.CssClass = "maintable_droplistdown"; tmpdl.EnableViewState = true; cell.Controls.Add(tmpdl); break; case 2: 。 。 。 default : break; } row.Cells.Add(cell); } table.Rows.Add(row); }}页面上一个普通按钮,按下后,在/********/处设置断点,发现表格的行数已经变成2(未动态增加行之前的状态)了。 搞定了,参考如下页面:http://hi.baidu.com/usasp/blog/item/c0affd636f93cf630d33fa06.html添加前边已经增加的行,其实是不能在(!ispostback)里边做的,正好相反,要在外边。散热心分! CheckBoxList的简单操作 asp.net中如何实现复制,粘贴按钮? 100分,这个怎样打印??? 高手们能不能给一个过滤危险字符的,又要能适合于大小写混用的正则表达式 如何实现重叠 ListBox1.SelectedValue读不到值,郁闷了 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 奇怪的问题,关于修改记录 一个很简单的更新,请帮我找下错误呀!谢谢!问题解决马上给分 asp文件如何转换成asp.net? 一个firefox与IE不能兼容的问题 ASP.NET VS里怎么使用左右框架嵌套呢?
要不就用后台动态添加,但是会增加服务器负担不建议用。
后台代码,其中,main_table是一个原来有2行的表格:
private int maintable_Rownums = 1;
protected void Page_Init(object sender, EventArgs e)
{
/********/
if (!base.IsPostBack)
{
AddTableRows(main_table, maintable_Rownums,12);
}
}
protected void AddTableRows( Table table, int rowcounts, int cellcounts)
{
Unit lineheight=new Unit (100);
for (int i = 0; i < rowcounts ; i++)
{
TableRow row = new TableRow();
row.Height = lineheight;
for (int j = 0; j < cellcounts ; j++)
{
TableCell cell = new TableCell();
cell.BorderWidth = Unit.Pixel(1);
cell.BorderColor = System.Drawing.Color.Black;
cell.HorizontalAlign = HorizontalAlign.Center;
switch (j)
{
case 0:
cell.Text = (i + 1).ToString ();
break ;
case 1:
DropDownList tmpdl = new DropDownList();
file.readsoncompany(tmpdl, Auth.getuserunit(this.Session["username"].ToString()));
tmpdl.CssClass = "maintable_droplistdown";
tmpdl.EnableViewState = true;
cell.Controls.Add(tmpdl);
break;
case 2:
。
。
。
default :
break;
}
row.Cells.Add(cell);
}
table.Rows.Add(row);
}
}页面上一个普通按钮,按下后,在/********/处设置断点,发现表格的行数已经变成2(未动态增加行之前的状态)了。
http://hi.baidu.com/usasp/blog/item/c0affd636f93cf630d33fa06.html添加前边已经增加的行,其实是不能在(!ispostback)里边做的,正好相反,要在外边。散热心分!