下面这段代码是为了测试对dataGridView1排序后,为什么报表不能同步排序?
一定要再为报表写一段查询的代码吗?这样做为会影响速度吗?
用C#做C/S结构的管理系统一定这么麻烦吗?在表单上有一个crystalReportViewer1; dataGridView1; button1 通过点击button1将查询结果显示在上面两个控件里,
想问的是:如果对dataGridView1进行排序后,报表的内容也是排序的,如何设置或如何写代码?
        BindingSource bs = new BindingSource();
        DataSet1 ds1 = new DataSet1();
        string connstr = "server=.; database=mydata; uid=sa; pwd=";
        string str = "select * from operator";
        SqlDataAdapter sda = new SqlDataAdapter(str, connstr);
        sda.Fill(ds1, "DataTable1");
        CrystalReport1 cr = new CrystalReport1();
        bs.DataSource = ds1.Tables["DataTable1"];
        cr.SetDataSource(bs.DataSource);
//一定要用'bs.DataSource'; 只'bs'不行,dataGridView1.DataSource 可以;
        crystalReportViewer1.ReportSource = cr;
        dataGridView1.DataSource = bs;

解决方案 »

  1.   

    dataGridView排序了,但是datatable里并没有反应上啊,可以把dataGridView的排序转换到datatable中。
      

  2.   


    我已经绑定了,点击button2时(bs.RemoveSort)也执行了取消排序。
    那么如何将dataGridView1转换到dataTable1中?
      

  3.   

    dataGridView.datasource as datatable.defaultview 自己转换下
      

  4.   

    dataGridView排序了,但是你传到crystalReportViewer1的数据没有进行排序,
      

  5.   


     bs.DataSource = ds1.Tables["DataTable1"]; 
    bs.Sort="f_name";  //先排序,在dataGridView1有反应,在报表里还是原样。
            cr.SetDataSource(bs.DataSource); 
    //一定要用'bs.DataSource'; 只'bs'不行,dataGridView1.DataSource 可以请问各位,排序后如何再传到报表里?
      

  6.   

      ds1.Tables[DataTable1].DefaultView.Sort ="f_name Desc"
          
    bs.DataSource = ds1.Tables["DataTable1"]; 
    试下
      

  7.   

    DataTable是不会排序的,要排序可以用DataView
      

  8.   


    已经绑定了;
    BindingSource bs = new BindingSource(); 
    bs.DataSource = ds1.Tables["DataTable1"]; 
    bs.Sort="f_name";
      

  9.   

    你用DataView作为DataGridView.Dataource ,
    DataView dView=table.defaultView;
    DataGridView1.DataSource=dView;
    然后把dView传入报表,
    因为dataView 是用来排序的,而Table不是,DGV的排序变化后,DataView的记录顺序会跟随发生变化。
      

  10.   


    是可以,可需要点击水晶报表的刷新按钮,报表才会与dataGridView同步;
    我把dataGridView1与CrystalReport1放在同一个Form1上,
    当点击dataGridView1列头排序后,报表没有反应,在表单上,有一个Button1,
    点击Button1重新设置报表的SetDataSource还是没有反应,
    想问一下如何用代码让报表刷新?