小弟现在遇到一个问题,请求各位哥哥姐姐帮忙。就是我现在已经通过好几个表联合Select出了很多数据,可能上万条,然后这些数据已经绑定到dataSet里面去了,并且已经显示在datagridview1中去了,客户已经可以看到这些数据集;但是我现在想把这些数据集进行二次过滤、排序、汇总等操作,要通过右键来实现这些功能;比如我在datagridview1上面点右键,弹出一个对话框,里面有过滤、汇总、排序等,然后我点过滤,就会弹出一个过滤条件框给我填写条件,客户填完条件之后,相应的数据就已经过滤出来了。以上功能该怎么实现,我需要有完全代码,好的我给全部分,并加分;
各位大哥大姐帮帮忙吧!!!

解决方案 »

  1.   

    gridview中手工排序 
    在asp.net 2.0中,如果是使用gridview的话,可以要对gridview进行排序的话,可以配合sqldatasource来使用,已经内建了排序的功能(即点列标题进行排序),但如果要配合其他数据源控件的话,则必须使用
    自定义的排序方法了,今天学习到了如何用dataset搭配gridview的话,进行标题排序,现将其方法摘录如下:
       首先,用一个方法将数据取出来,放到DATASET里去,如下代码
    private DataSet GetData()
    {SqlConnection myConnection = new SqlConnection(ConnectionString);SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Categories", myConnection);DataSet ds = new DataSet();ad.Fill(ds);return ds; }
    然后,对gridview进行如下设置
      <asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">
    </asp:GridView> 
       然后,其gridview_sorting的自定义过程如下,首先添加一个属性
      public SortDirection GridViewSortDirection
    {get{if (ViewState["sortDirection"] == null)ViewState["sortDirection"] = SortDirection.Ascending;return (SortDirection) ViewState["sortDirection"]; }set { ViewState["sortDirection"] = value; } }   GridViewSortDirection 是一个简单的属性,用viewstate保存每次排序的方向
    而GridView1_Sorting的代码如下:
      protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {string sortExpression = e.SortExpression;if (GridViewSortDirection == SortDirection.Ascending){GridViewSortDirection = SortDirection.Descending;SortGridView(sortExpression, DESCENDING);}else{GridViewSortDirection = SortDirection.Ascending;SortGridView(sortExpression, ASCENDING); } }
      在这里,首先得到用户点击要排序列的标题,然后判断当前gridviewsortdirection的属性值来判断,如果已经是升序的话,则设置GridViewSortDirection为降序,并调用一个sortgridview过程;否则默认是调用升序来排序;
      而sortgridview方法如下:
      private void SortGridView(string sortExpression,string direction)
    {DataTable dt = GetData().Tables[0]; DataView dv = new DataView(dt); dv.Sort = sortExpression + direction; GridView1.DataSource = dv;GridView1.DataBind(); }
      在这里,接收两个参数,分别是sortExpression和direction,然后构成dataview进行排序,十分好理解
      

  2.   

    用BindingSource.Filter可以直接过滤
      

  3.   

    用个dataview 读取dataset里的表然后使用dataview的过滤功能    dv.RowFilter 属性
      

  4.   

    用个dataview 读取dataset里的表 然后使用dataview的过滤功能    dv.RowFilter 属性之后再把过滤后的数据重新绑定到datagridview1上
      

  5.   

    过滤:
     DataTable table = (DataTable)dgv.DataSource;  //全部显示
    table.DefaultView.RowFilter = "";//过滤例句
    table.DefaultView.RowFilter="CName like '*"+txtCName.Text+"*'";汇总:
     table.Compute("Sum(" + columnName + ")", "true");排序:
    可设datagridview点击表头排序可用即可