我从数据库中得到一个表,填充进DataSet.这个表每次要使SQL运行很长时间.然后根据treeview中的结点在表中进行筛选.我以前的做法是,每点击一个结点,把结点的值做为条件,从数据库把整个表重新生成一遍,而事实上,这个表第一次生成的时候就足够了,以后点每个结点都只要从DataSet中的那个表挑选出适合的条件就可以了.请问:我要如何做,才需要只读一次数据库就可以完成?又或者我怎样从已经填充到DataSet表中的数据中筛选出我想要的结果?

解决方案 »

  1.   

    dataset 填充完毕,可以保留到变量中,如果是asp.net的可以保持到viewstate中
    dataset装载到dataview中
    dataview提供了对数据集的查询功能
    语法和sql一样
    这样你就可以在这个数据集中找到你要的数据了
      

  2.   

    设置一个隐形的treeview,每次都过滤了数据赋值给需要显示的treeview
      

  3.   

    依据你传过来的节点的信息,遍历dataset中的记录不就可以了
    dataset本来就是断开式的,不用每次都连数据库。
      

  4.   

    有权限验证的数据可以用session~
    前提是数据量 不大。 
      

  5.   

    按如下方法应该能够满足楼主的要求:
    (大致方法)
    dataview dv=dataset.defalutview;
    dv.filtor="你的赛选条件";
      

  6.   

    虽然 dataset是断开的 但遍历效率十分低,没有sql语句在数据库中执行那么高
      

  7.   


    只能用等号吗?比如成绩字段,要选出大于60的,如何做?
    又如果某两行的外键相同,我只要其中一条,这又怎么办?
    总之,就是一些可以在数据库中处理的方法在DataSet中如何处理?