所以要用一个东西把你的点击记录存储起来。你可以用VIEWSTATE来存这个TABLE变量,每次PAGE_LOAD的时候把它读出来,每次ONCLICK添加完行之后把TABLE存入VIEWSTATE,这样就OK了。不要随便用静态变量,它会产生一些很BUG的问题。
另外如果VIEWSTATE你觉得不好就用SESSION。总之,在每次POSTBACK后把TABLE存起来就OK了。
首先你要明确的是gridview的显示数据全部是从数据源里查出来的不管是DataSource还是一个List还是DataTable
所以你想改变前边的显示数据就必须要改变数据源(用js实现除外)
假设你的数据源是List(对象名:list)
1.添加一行:
从页面中获得新值的数据(放几个文本框手动输入)
点一个按钮时
实例化一个对像(你数据的封装对象)
比如叫UserInfo
UserInfo
newUser
=
new
UserInfo()
newUser.Name
=
"获得文本框的值"
newUser.Address
=
"获得文本框的值"
list.Add(newUser)
BindMethod()//绑定数据的方法
2.删除数据:
比如你想删除第二行
当点击按钮时要把2传给方法或都保证能从后台获取到
list.RemoveAt(2)//2是获取到的
BindMethod()
不知道是不是这个意思
可用Session来实现。我现在在做的一个物流系统就是这样来增加车辆的发车时间的。首先在Page_Load里初始化 Session["str"] = ""
在该按钮的单击事件里写
Session["str"] = String.Concat(Session["str"].ToString(),"<tr><td><input type=\"text\" name=\"(这儿自己取个名,方便到时取里面的值。用Request["取的名字"].ToString 会自动取得以逗号格式隔开的textbox里的值。可自己试着做。)\" style=\"width: 156px\"></td></tr>")
(String.Concat(string1,string2)方法用来连接string1和string2两个字符串,即每次都在现有的一行后面新加一行。)
然后在页面的前台aspx文件里用<%=Session["str"]%>来显示这些行,注意将它放在你的<table>和</table>中间,就可以往该表格中加入行了。
要有命名规则也可以的。它们也可以都用一样的名字,比如说都为aa ,则name=\"aa\",这样可以用Request["aa"]将一批值取过来。或者你想命名为aa0,aa1,aa2……,可以定义一个Session["i"]=0,然后在前面那段代码的name=\"aa\"+Session["i"].ToString() Session["i"]=Session["i"]+1这样就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)