如何对已经绑定到DataSet中并已经显示在DataGridView1中的数据进行再次过滤、排序、汇总等功能!

czk598478 2008-07-02 09:20:04
小弟现在遇到一个问题,请求各位哥哥姐姐帮忙。

就是我现在已经通过好几个表联合Select出了很多数据,可能上万条,然后这些数据已经绑定到dataSet里面去了,并且已经显示在datagridview1中去了,客户已经可以看到这些数据集;

但是我现在想把这些数据集进行二次过滤、排序、汇总等操作,要通过右键来实现这些功能;

比如我在datagridview1上面点右键,弹出一个对话框,里面有过滤、汇总、排序等,然后我点过滤,就会弹出一个过滤条件框给我填写条件,客户填完条件之后,相应的数据就已经过滤出来了。

以上功能该怎么实现,我需要有完全代码,好的我给全部分,并加分;


各位大哥大姐帮帮忙吧!!!
...全文
452 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
myjce 2008-07-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 myjce 的回复:]
过滤:
DataTable table = (DataTable)dgv.DataSource;

//全部显示
table.DefaultView.RowFilter = "";

//过滤例句
table.DefaultView.RowFilter="CName like '*"+txtCName.Text+"*'";

汇总:
table.Compute("Sum(" + columnName + ")", "true");

排序:
可设datagridview点击表头排序可用即可
[/Quote]

这就是方法啊
czk598478 2008-07-05
  • 打赏
  • 举报
回复
帮我顶可以,
但是你们给我一点方法啊!
Feiin 2008-07-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liubin911 的回复:]
用个dataview 读取dataset里的表

然后使用dataview的过滤功能    dv.RowFilter 属性
[/Quote]
myjce 2008-07-05
  • 打赏
  • 举报
回复
过滤:
DataTable table = (DataTable)dgv.DataSource;

//全部显示
table.DefaultView.RowFilter = "";

//过滤例句
table.DefaultView.RowFilter="CName like '*"+txtCName.Text+"*'";

汇总:
table.Compute("Sum(" + columnName + ")", "true");

排序:
可设datagridview点击表头排序可用即可
hzfujiomo 2008-07-04
  • 打赏
  • 举报
回复
顶了~
czk598478 2008-07-03
  • 打赏
  • 举报
回复
自己顶了~
czk598478 2008-07-02
  • 打赏
  • 举报
回复
7楼的兄弟,可以给我详细的代码吗?

很好的解决问题,我给你全分,不够可以继续加上去的。
帮忙吧兄弟,感谢你了。


呵呵!!!~~~~

liubin911 2008-07-02
  • 打赏
  • 举报
回复
用个dataview 读取dataset里的表

然后使用dataview的过滤功能 dv.RowFilter 属性

之后再把过滤后的数据重新绑定到datagridview1上
yagebu1983 2008-07-02
  • 打赏
  • 举报
回复
用DataView 可以!!!
liubin911 2008-07-02
  • 打赏
  • 举报
回复
用个dataview 读取dataset里的表

然后使用dataview的过滤功能 dv.RowFilter 属性
smntbk 2008-07-02
  • 打赏
  • 举报
回复
用BindingSource.Filter可以直接过滤
lingxyd_0 2008-07-02
  • 打赏
  • 举报
回复
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进行排序,十分好理解
ljqingas 2008-07-02
  • 打赏
  • 举报
回复
顶!!!!!!!!!
lsc116021166 2008-07-02
  • 打赏
  • 举报
回复
关注

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧