我在一个用gridview绑定数据的页面上加了一个查询的功能,查询好后,想使用GRIDVIEW发现编辑的ROW(列)并不是我查询结果指定的列,原因就是数据绑定是用了同一个绑定函数,并没有根据查询的语句进行绑定数。现在要做的就是传递查询语句。
在asp.net里面每每激活一个动作就是提交一次表单(有时候觉得这点没真的挺不好,一小段数据的更改都要整个页面的刷新。渴望ajax了,可是我处于asp.net的学习阶段能多用就多用了),所以会出现上边的问题。
现在想到的就是一个页面的全局变量。
首先想到的是session,应该可以实现。
还有个static。可是在Asp.net中所有的用户将使用同一个static变量。这就意味着每一个使用该页面的用户对该变量的操作将会影响到其他用户。被否决掉了。
最后是ViewState对象。
Asp.net 提供了一个更好的ViewState对象。ViewState对象用来保存页面中的各种变量,甚至是对象。使用方法和HashTable类似,只要用变量 名称做索引,如ViewState["Var"],就可以用存取变量Var的值,而不管Var是普通变量,还是对象,甚至是内存中的一张 DataTable,太方便了。为什么可以用ViewState而不能用static变量哪?原因就是服务器端会为每个连接到该页面的用户分别建立一个 ViewState,所以ViewState相当于页面级的Session。这下我们可以放心地使用ViewState来存取需要暂寸的变量和对象了。
ViewState的用法很简单,如下所示:
1、保存变量到ViewState中:
ViewState["times"]=times;//存放普通变量times
ViewState["Orders"]=dtOrders;//存放DataTable型对象dtOrders
2、读出ViewState中的值:
times=(int)ViewState["times"];
dtOrders=(DataTable)ViewState["Orders"];
不错的东西 测试成功!