DataGridView提供数据的显示和排序功能,但没有合计的功能,本人曾想过通过绑定DataView,然后直接给DataView增加一个,合计是可以显示出来,但通过列标题排序就很难控制了,绑定的做法很麻烦,因为很多动作不受控。绑定不行,只能自己创建DataGridView的列和行了,自己控制排序等。
为DataGridView增加列和行:
/// <summary>
/// 根据DataTable创建DataGridView。
/// </summary>
/// <param name="table"></param>
private void BuidGrid(DataTable table)
{
for (int i = 0; i < table.Columns.Count; i++)
{
DataColumn dcol = table.Columns[i];
DataGridViewColumn column = new DataGridViewColumn(new DataGridViewTextBoxCell());
dtgCount.Columns.Add(column);
column.SortMode = DataGridViewColumnSortMode.Automatic;
column.HeaderText = dcol.ColumnName;
column.Name = dcol.ColumnName;
if (i == 0)
{
column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
}
else
{
column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
if (i == table.Columns.Count - 1)
column.DefaultCellStyle.BackColor = Color.Yellow;
}
}
foreach (DataRow row in table.Rows)
{
int index = dtgCount.Rows.Add();
DataGridViewRow vRow = dtgCount.Rows[index];
for (int i = 0; i < table.Columns.Count; i++)
{
vRow.Cells[i].Value = row[i];
}
}
//增加多一个合计的行
int countIndex = dtgCount.Rows.Add();
DataGridViewRow countRow = dtgCount.Rows[countIndex];
countRow.Cells[0].Value = "合计";
for (int i = 1; i < table.Columns.Count; i++)
{
countRow.Cells[i].Value = table.Compute("Sum([" + table.Columns[i].ColumnName + "])", "");
countRow.DefaultCellStyle.BackColor = Color.Yellow;
}
}
这样合计行就在最下面了,现在要解决的是排序的问题了,在上面的数据中,除了第一列,其他列为Int32类型,合计行好像是字符串类型,没有深入研究原因。
private void dtgCount_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
if (e.Column.Index == 0)
{
if (dtgCount.Rows[e.RowIndex1].Cells[0].Value.ToString() == "合计")
{
if (e.Column.HeaderCell.SortGlyphDirection == SortOrder.Ascending)
e.SortResult = 1;
else
DataGridView 实现添加合计行并始终显示在底部 收藏 DataGridView 中没有合适的方法来冻结底部的合计行,这里用一种比较简单的方式实现。 1. 数据部分的 DataGridView...
datagridview显示合计_IT/计算机_专业资料。public class Pageing { // 每页... // 总页数 private int pageCount = 1; // 分页数据集合 private Data...
广东纺织职业技术学院 第8讲 具有合计功能的 讲 dataGridView 信息工程系主讲: 主讲:彭金祥 广东纺织职业技术学院 教学目标 dataGridViewSummary界面 界面 ...
} } 6.DataGridView 判断新增行 DataGridView 的 AllowUserToAddRows 属性为 True 时也就是允许用户追加新行的场合下, DataGridView 的最后一行就是新追加的 行(...
C#中向DataGridview中增添一行数据则么添加_计算机硬件及网络_IT/计算机_专业资料。今日推荐 180份文档 2014证券从业资格考试 2014证券资格证券交易高分突破试卷及...
DataGridView数据统计操作_建筑/土木_工程科技_专业资料。DataGridView数据统计操作DataGridView 合计行 C# DataGridView统计操作讲师:小浩 培训内容 ? 了解DataGrid...
DataGridView中在同一个单元格中显示图片和文字_计算机软件及应用_IT/计算机_专业资料。通过CellPainting重新绘制单元格来实现同一个单元格中显示图片和文字...
4、 DataGridView 判断新增行: DataGridView 的 AllowUserToAddRows 属性为 True 时也就是允许用户追加新行的场合下, DataGridView 的最后一行就是新追加的行(*行)...
最后通过 dataGridView1.Rows.Add(row)为 dataGridView1 控件添加新的行 row。 DataGridView 取得或者修改当前单元格的内容: 当前单元格指的是 DataGridView 焦点...
1. 我们来接着使用DataGridView,在上一篇关于类似QQ登录的文章里我们已经讲述了...还可以单 击vs工具栏的最后一项来设置各控件的tabindex的值。 ...

我要评论