vs2008 C# web编程 b/s结构我把SQL查询结果显示在GridView里,然后在GridView的数据中继续查询,该怎么做?
    具体这样的:用SqlDataAdapter从底层数据库把数据读到DataSet里,再把DataSet绑定到Gridview
    说明:第二次查询,我不想访问底层数据库了,就想在第一次的结果中查询,因为效率问题我想过使用临时表、存储过程等,但是,在临时表里,怎么查询呢?用循环遍历每条记录到可以,但是筛选后怎么绑定到GridView控件里?
还有,select * from...语句能否用于非数据库的查询?我刚接触web编程,很菜的,请大家帮忙,仔细点更好了

解决方案 »

  1.   

    可以用dataview进行数据过滤,然后绑定
    DataTable dt=dataset.tables[0];     
    DataView dv=new DataView(dt);
    dv.RowFilter="字段1 ="+TextBox1.Text.Trim();
    GridView.DataSource=dv;
    GridView.DataBind();
      

  2.   

    同意一楼 但是在得到原来绑定的数据源时要注意一下  不然得到的是null
      

  3.   

       这在某种程度上充分反应了B/S的一个缺点吧。在B/S结构中,服务器端每次只能响应一个请求,如果用户需要再进行操作,必须再次的进行请求。除非你把数据放在服务器端,比如Application,Session等等,否则数据必须重新再获取。
       当然你也可以考虑把数据放在ViewState,或者Cookie中,放在ViewState中不好的地方就是页面多了一大堆“乱七八糟”的东西,放在Cookie中得需要数据转换。都有一些缺点吧。
       反正到目前为止,我自己还没有想到自己觉得非常满意的办法,我现在一般都用ViewState或者页面的隐藏表单域或者Coolie。
      

  4.   

    应该是DS.Tables[i].Select ....
      

  5.   

    DataTable dt=dataset.tables[0];    
    DataView dv=new DataView(dt); 
    dv.RowFilter="";
    GridView.DataSource=dv; 
    GridView.DataBind(); 
    通过缓存保存dt或使用ViewState保存,还有缓存依赖
      

  6.   

    Cache["dt"]   =   dt;  
    if(Cache["dt"]==null)
    {
    }
    else  
    dt= (DataTable)Cache["dt"];