Winfrom Datagridview点击表头排序

private int Sort=0;//定义一个全局标识变量 
private void DgvChociePayData_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            try
            {
                int i = e.ColumnIndex;
                if (i != 8)//比如我需要点击姓名列排序,那我判断一下这一列的索引
                {
                    return;
                }
                else
                {
                    var data = dgvChociePayData.DataSource;//获取当前datagridview的数据             
                    List<ChociePay> pays = (List<ChociePay>)data;//转成类的list集合,前提是这个类中的字段和datagridview的绑定的类的字段一样
                    if (Sort == 0)
                    {
                        pays.OrderByDescending(p => p.cVouchID).ToList();//倒序
                        Sort = 1;
                    }
                    else
                    {
                        pays.OrderBy(p => p.cVouchID).ToList();//正序
                        Sort = 0;                        
                    }
                    dgvChociePayData.DataSource = pays;
                }
                               
            }
            catch (Exception ex)
            {
                LogHelper.Info(ex);
            }
           
        }

 

在 WinForms 的 DataGridView 控件中,可以通过使用 ColumnHeader 属性来实现多表头。具体步骤如下: 1. 设置控件的 ColumnHeadersVisible 属性为 false,这将隐藏默认的表头。 2. 添加自定义表头。可以使用 DataGridViewColumn 对象来创建列,然后使用 DataGridView.Columns.Add 方法将列添加到控件中。每个列可以包含一个或多个子列,用于创建自定义表头。 3. 设置每个列的 HeaderCell 属性为 DataGridViewColumnHeaderCell 对象。这将使该列的默认表头与自定义表头分离。 4. 设置每个子列的 HeaderCell 属性为 DataGridViewColumnHeaderCell 对象。这将使该子列的默认表头与自定义表头分离,并将其添加到相应的列中。 下面是一个简单的示例代码,用于创建一个带有两个表头DataGridView 控件: ```csharp // 隐藏默认表头 dataGridView1.ColumnHeadersVisible = false; // 创建第一级表头 DataGridViewColumn column1 = new DataGridViewTextBoxColumn(); column1.HeaderText = "表头1"; column1.Name = "Column1"; dataGridView1.Columns.Add(column1); // 创建第二级表头 DataGridViewColumn subColumn1 = new DataGridViewTextBoxColumn(); subColumn1.HeaderText = "子表头1"; subColumn1.Name = "SubColumn1"; DataGridViewColumn subColumn2 = new DataGridViewTextBoxColumn(); subColumn2.HeaderText = "子表头2"; subColumn2.Name = "SubColumn2"; column1.HeaderCell = new DataGridViewColumnHeaderCell(); column1.HeaderCell.Value = "表头1"; column1.HeaderCell.Style.Font = new Font(dataGridView1.Font, FontStyle.Bold); column1.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; column1.HeaderCell.Style.BackColor = Color.LightGray; column1.HeaderCell.Style.WrapMode = DataGridViewTriState.True; column1.HeaderCell.Style.Padding = new Padding(2, 2, 2, 2); column1.HeaderCell.Style.SelectionBackColor = Color.DarkGray; column1.HeaderCell.Style.SelectionForeColor = Color.White; column1.HeaderCell.Style.SelectionBorderWidth = 2; column1.HeaderCell.Style.SelectionBorderColor = Color.Black; column1.HeaderCell.Style.SelectionFont = new Font(dataGridView1.Font, FontStyle.Bold); column1.HeaderCell.Style.SelectionAlignment = DataGridViewContentAlignment.MiddleCenter; subColumn1.HeaderCell = new DataGridViewColumnHeaderCell(); subColumn1.HeaderCell.Value = "子表头1"; subColumn2.HeaderCell = new DataGridViewColumnHeaderCell(); subColumn2.HeaderCell.Value = "子表头2"; column1.DataGridView.Columns.AddRange(new DataGridViewColumn[] { subColumn1, subColumn2 }); ``` 在这个示例中,我们创建了一个带有两个表头DataGridView 控件,并将其添加到窗体上。第一级表头为“表头1”,第二级表头包含两个子列:“子表头1”和“子表头2”。我们还设置了一些样式属性,以更改表头的外观和行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值