DataGridView行标题在排序时丢失了标题

时间:2012-12-17 14:45:15

标签: c# winforms sorting datagridview datagridrowheader

我按照here中的提示说:

datagridview1.Rows[0].HeaderCell.Value = "ur text";

借助于此,我设置了一个方法:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e, DataSet src)
{
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        dataGridView1.Rows[i].HeaderCell.Value = row_captions[i];
    }
}

它很好地用字幕填充我所有的行标题。当我尝试对任何列进行排序时会发生此问题。再次调用此方法,即使行以不同的方式排列,字幕也保持相同的顺序。我尝试使用bool值,因此它不会再次调用此方法:

private first_time = true;

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e, DataSet src)
{
    if(first_time)
    {
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            dataGridView1.Rows[i].HeaderCell.Value = row_captions[i];
        }
    }
}

private void dataGridView1_Sorted(object sender, EventArgs e)
{
    first_time = false;
}

但现在,它根本不会添加标题,因为显然行会被删除并再次添加,从而失去属性(如果我错了,请纠正我,因为我不完全确定)。

有两种方法:维护行的标题并相应地对它们进行排序吗?

1 个答案:

答案 0 :(得分:1)

我尝试在事件HeaderCell.Value中设置CellFormatting并相应地进行排序

 private void dataGridView`_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.ColumnIndex == 1)
        {
            dataGridView1.Rows[e.RowIndex].HeaderCell.Value = e.Value;
        }
    }