现在的位置: 首页 > 综合 > 正文

dataGridView 排除第一行排序

2013年10月20日 ⁄ 综合 ⁄ 共 1233字 ⁄ 字号 评论关闭

1、在sorted事件中把排除行记录下来 ,sorted事件是排序完成时才触发的,并且早于ColumnHeaderMouseClick事件      

private void dgvDateReport_Sorted(object sender, EventArgs e)

        {
            if (lastRow.Count <= 0)
            {
                dgvDateReport.Rows[0].Frozen = false;              //解除冻结
                dgvDateReport.Columns[3].Frozen = false;
                string str = dgvDateReport.Rows[0].Cells[0].Value.ToString();   //取得行数据
                int index;
                if (str == "")            //判断需要排除的行是否在第一行
                {
                    index = 0;        //判断需要排除的行在第一行
                }
                else
                {
                    index = dgvDateReport.Rows.Count-1;     //判断需要排除的行在最后一行
                }
                lastRow.Add(dgvDateReport.Rows[index]);       //记录
                dgvDateReport.Rows.RemoveAt(index);            //删除
            }

        }

2、在ColumnHeaderMouseClick事件中把记录的排除行再添加到第一行

      private void dgvDateReport_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.ColumnIndex < 4)
            {
                if (e.RowIndex >= 0 || dgvDateReport.Rows.Count == 0)
                    return;
                if (lastRow.Count <= 0)
                    return;
                dgvDateReport.Rows.Insert(0,lastRow[0]);
                lastRow.Clear();
                dgvDateReport.Rows[0].Frozen = true;
                dgvDateReport.Columns[3].Frozen = true;

            }
        }

3、效果如图

4、列禁止自动排序

dgvDateReport.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;

.

抱歉!评论已关闭.