asp.net Table 如何动态地添加一行?

asp.net Table 如何动态地添加一行?,第1张

因为TABLE的初始状态只有一个 借据号 万元的表头,无论按钮怎么点,都只会触发一次Button_Add_Click,添加一行。以后每次点击,初始状态都只有表头,所以点击之后只会有一行。

所以要用一个东西把你的点击记录存储起来。你可以用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这样就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11821068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存