我要做一个功能类似论坛发表评论的功能,但是不保存数据到数据库中。
只是想用Session或其它什么方式保存asp:table服务器控件的数据;
点击“新增”按钮:
protected void btnAdd_Click(object sender, EventArgs e)
{
TableRow tr = new TableRow();
TableCell td1 = new TableCell();
TableCell td2 = new TableCell();
TextBox txtBox1=new TextBox();
TextBox txtBox2=new TextBox();
td1.Controls.Add(txtBox1);
td2.Controls.Add(txtBox2);
tr.Cells.Add(td1);
tr.Cells.Add(td2);
tabClass.Rows.Add(tr);
}
但是这样只能添加一条数据,再次点击button控件还是不能增加数据行,都只是显示一条数据,这是为什么呢?
只是想用Session或其它什么方式保存asp:table服务器控件的数据;
点击“新增”按钮:
protected void btnAdd_Click(object sender, EventArgs e)
{
TableRow tr = new TableRow();
TableCell td1 = new TableCell();
TableCell td2 = new TableCell();
TextBox txtBox1=new TextBox();
TextBox txtBox2=new TextBox();
td1.Controls.Add(txtBox1);
td2.Controls.Add(txtBox2);
tr.Cells.Add(td1);
tr.Cells.Add(td2);
tabClass.Rows.Add(tr);
}
但是这样只能添加一条数据,再次点击button控件还是不能增加数据行,都只是显示一条数据,这是为什么呢?
var vTb=$("#TbData");//得到表格ID=TbData的jquery对象
//所有的数据行有一个.CaseRow的Class,得到数据行的大小
var vNum=$("#TbData tr").filter(".CaseRow").size()+1;//表格有多少个数据行
var vTr=$("#TbData #trDataRow1"); //得到表格中的第一行数据
var vTrClone=vTr.clone(true);//创建第一行的副本对象vTrClone
vTrClone[0].id="trDataRow"+vNum;//設置 第一個Id為當前獲取索引;防止重複添加多個ID為trDataRow1的數據行;一次添加一個;
vTrClone.appendTo(vTb);//把副本单元格对象添加到表格下方
}
该方法,主要运用了jquery的clone函数,克隆一个table的行副本。然后添加给原来的table。
删除方法关键Code:
var vNum=$("#TbData tr").filter(".CaseRow").size()+1;//表格有多少个数据行;
if(vNum<=2)
{
alert('请至少留一行');
return;
}
var vbtnDel=$(this);//得到点击的按钮对象
var vTr=vbtnDel.parent("td").parent("tr");//得到父tr对象;
if(vTr.attr("id")=="trDataRow1")
{
alert('第一行不能删除!'); //第一行是克隆的基础,不能删除
return;
}else{
vTr.remove();
}
项目是通过表单提交的,如果表单提交失败,就会刷新页面,之前填写的数据都会被刷新掉
因为项目表单提交是没有做Ajax处理,所以得想办法让数据做缓存,具体怎样做还得靠高手指点。