dataGridView1最后一行合计不排序

yanele 2011-01-22 04:27:36
dataGridView1绑定了数据源,并在最后一行手工加上了一行合计行,但排序为降序时,会将合计行显示在dataGridView1第1行,这样看上去很不好看,不知道有没有办法解决?怎么解决?
...全文
723 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanele 2011-01-24
  • 打赏
  • 举报
回复
收到了,需要安装4.0的.net farmework,我安装的是VS2008版,打不开!!!
flowfog 2011-01-24
  • 打赏
  • 举报
回复
发到你QQ邮箱了,看一下有没有收到?
yanele 2011-01-24
  • 打赏
  • 举报
回复
我下了,但是打不开,提示需要安装4.0的.net farmework。无安装的的VS2008版。是3.5的.net farmework打不开。如果可以转一下的话,请传我的邮箱:yangle.ycs@163.com
flowfog 2011-01-24
  • 打赏
  • 举报
回复
给我一个邮箱
yanele 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 flowfog 的回复:]
http://download.csdn.net/down/2875543/flowfog
[/Quote]

我的积分被扣了,却下不下来。能不能传给我?QQ:516920313
flowfog 2011-01-24
  • 打赏
  • 举报
回复
http://download.csdn.net/down/2875543/flowfog
yanele 2011-01-24
  • 打赏
  • 举报
回复
To flowfog:我是指在datagridview列头那排序.

To wangyue4:单击列的事件里先把最后一行的数据存在内存里再删掉该行,然后排完序再把它加上不就可以了么.

我也是这样想的,排序前后两个事件在哪里处理?因为排序是控件自带的功能,点击列标题已经自动排序了,自己没有别外写排序事件。所以不知道排序前后两个事件在那里处理?
flowfog 2011-01-24
  • 打赏
  • 举报
回复
你是指在SQL语句中的排序还是datagridview列头那排序?
大黄鸭在发光 2011-01-24
  • 打赏
  • 举报
回复
在单击列的事件里先把最后一行的数据存在内存里再删掉该行,然后排完序再把它加上不就可以了么
yanele 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangyue4 的回复:]
在单击列的事件里先把最后一行的数据存在内存里再删掉该行,然后排完序再把它加上不就可以了么
[/Quote]
能不能具体一点?
yanele 2011-01-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]
动重做一下排序,记录原数据源,对数据源处理下,再重新加上合计行
[/Quote]
我6楼的代码就是这样的,但编译时始终会报错,请帮我看一看,行吗?
wuyq11 2011-01-23
  • 打赏
  • 举报
回复
动重做一下排序,记录原数据源,对数据源处理下,再重新加上合计行
子夜__ 2011-01-23
  • 打赏
  • 举报
回复
用的本身自带的排序吗?

自己写个排序功能不行么?

然后自己选定行来排序就好了。。
yanele 2011-01-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liangjun90 的回复:]
手写代码绑定列使用GridViewTextColumn 可以试试
[/Quote]
不会呀。
liangjun90 2011-01-22
  • 打赏
  • 举报
回复
手写代码绑定列使用GridViewTextColumn 可以试试
yanele 2011-01-22
  • 打赏
  • 举报
回复
据说这样可以,但时执行重新绑定时dataGridView1.DataSource = dt,会报错:
操作无效,原因是它导致对 SetCurrentCellAddressCore 函数的可重入调用。

private void dataGridView1_Sorted(object sender, EventArgs e)
{
DataTable dt = ds1.Tables[0];
DataView dv = dt.DefaultView;
dv.Sort = dt.Columns[colindex].ColumnName;
dt = dv.ToTable();
dt.Rows.Add(lastRow[0]);
lastRow.Clear();
//dataGridView1.DataSource = dt;这行会报错
}

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex >= 0 || dataGridView1.Rows.Count <= 1)
{
return;
}
else
{
if (lastRow.Count == 0)
{
colindex = e.ColumnIndex;
lastRow.Add(ds1.Tables[0].Rows[dataGridView1.Rows.Count - 1].ItemArray);
ds1.Tables[0].Rows.RemoveAt(ds1.Tables[0].Rows.Count - 1);
}
}
}
yanele 2011-01-22
  • 打赏
  • 举报
回复
就是dataGridView1控件显示了从SQL数据库中查询出来的数据,然后手工在最后加了一行合计数据列。

现在的问题是:当排序时,这手工加上的这行如何让他始终显示在最底端,而不会因为降序跳到第一行去了。
doubleu2005 2011-01-22
  • 打赏
  • 举报
回复
可以先选择一下最后一行以前的所有行,再排序
xugan666 2011-01-22
  • 打赏
  • 举报
回复
还是不太明白你想表达什么,有图片就好说··实在不行就隐藏该列··
yanele 2011-01-22
  • 打赏
  • 举报
回复
现在是有合计行,但排序会让这一行跑到顶端去,就很难看了。
加载更多回复(1)

111,125

社区成员

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

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

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