vs2005中可以非常方便的把select语句放在SqlDataSource里再与Gridview绑定,省去了很多代码。
但是如果想增加查询就不太方便了。
比如我想首次进入页面时在gridview里面显示全部的数据,然后下面有些查询条件比如姓名、email等,输入姓名点查询则会在gridview里显示过滤后的数据。以前是这么做的:在SqlDataSource里面写查询分支,比如
if @op=1
begin
  select .....
end
else if @op=2
begin
  select....
end
但是这样有个问题就是你必须在SqlDataSource里面把查询参数事先设定好,如果我想在用户不输入email时默认是不过滤email的查询,所以这样就不太好弄。
  现在的方法是点击查询后重写SqlDataSource的selectcommand,但是这样一来如果想修改查出来的数据就会出错,因为postback以后SqlDataSource里面固定的selectcommand又出来了。这样我就想增加一个变量来记录是过滤查询还是全部的查询,不过在asp.net里的变量在下一次postback时就又重新初始化了,除非设定为static的,但是当有多个用户时其他人可以改变这个static值,相当于是全局的。所以这种情况需要用session或者viewstate来实现。
  说了这么多我都乱了,不说了,把代码贴出来给遇到同样问题的兄弟们看看,如果大家有更好的办法请赐教。
为SqlDataSource/Girdview增加查询    protected void Page_Load(object sender, EventArgs e)
#endregion


相关文章: