我想在系统中实现一个报表系统,是这样运行的
用户输入某个查询条件进行搜索,系统用gridview显示搜索结果,为了方便用户选择所以搜索出的查询 条件是 多个,用户在搜索结果中按需要选择多个结果然后返回主界面,搜索的结果则添加到主界面相应的gridview中用来作为查询条件。
由于是报表系统,所以有n个gridview以收集不同的信息
现在的代码是这样的
GridView1是用来放置搜索结果的
主界面GridView2是用来放置用来做查询的
由于某一查询条件如人员,要多次搜索,所以GridView2必需能够多次更新或增加新行
ArrayList gwlist = new ArrayList();            
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {
                usr.Userid = Convert.ToInt32(GridView1.Rows[i].Cells[1].Text);
                usr.Usercode = GridView1.Rows[i].Cells[2].Text;
                usr.Username = GridView1.Rows[i].Cells[3].Text;
                if (Session["shous"] != null)
                {
                    gwlist = (ArrayList)Session["shous"];
                }
                gwlist.Add(usr);
                Session["shous"] = gwlist;                
            }
        }        if (Session["shous"] != null)
        {
            IList gwsp = (ArrayList)Session["shous"];            GridView2.DataSource = gwsp;
            GridView2.DataBind();
        }GridView应用session报表ArrayList

解决方案 »

  1.   

    现在的问题是这样的
    如选择了张三李四
    结果李四被两次添加到GridView2中
      

  2.   

    加一个ID字段,根据ID来判断是新增还是修改
      

  3.   


    if (Session["shous"] != null)
                     {
                         gwlist = (ArrayList)Session["shous"];
                     }
    放在循环之前赋值Session["shous"] = gwlist;  这个放在循环之外
      

  4.   

    不要乱用全局变量usr。其他的,你的逻辑思路比较乱,我也没有太看懂。
      

  5.   

    我把工程说的再明细些
    如,用户要查询某些员工的信息,比如按姓名查询李姓6名员工张姓5名员工王姓7名员工,用户输入李然后搜索,系统返回所有李姓员工,用户选择6名员工后信息添加到GridView2中……如此反复,将18名员工的信息添加到GridView2,然后执行查询操作,从GridView2中读取信息作为查询条件。
    3楼未能解决问题
    我现在用GridView2存放已经选定的查询条件(如姓名、工号等信息),然后用arraylist读取GridView2中的数据与新选择的数据进行拼接,再次放入GridView2。
    目前的问题是不能完全取出GridView2中存放的数据,我做的是每10行为一页,现在只能取出第一页10行数据,第二页的数据取不到。
      

  6.   

    我也不是很明白 
    gwlist.Add(usr);
    在增加usr之前,检测usr是否存在于gwlist中
      

  7.   

    我把工程说的再明细些
     如,用户要查询某些员工的信息,比如按姓名查询李姓6名员工张姓5名员工王姓7名员工,用户输入李然后搜索,系统返回所有李姓员工,用户选择6名员工后信息添加到GridView2中……如此反复,将18名员工的信息添加到GridView2,然后执行查询操作,从GridView2中读取信息作为查询条件。
     3楼未能解决问题
     我现在用GridView2存放已经选定的查询条件(如姓名、工号等信息),然后用arraylist读取GridView2中的数据与新选择的数据进行拼接,再次放入GridView2。
     目前的问题是不能完全取出GridView2中存放的数据,我做的是每10行为一页,现在只能取出第一页10行数据,第二页的数据取不到。