1

我在这里遵循了一个提示:

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;
}

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

有没有办法兼顾两者:维护行的标题并相应地对它们进行排序?

4

1 回答 1

1

我试图设置HeaderCell.Value事件CellFormatting及其相应的排序

 private void dataGridView`_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.ColumnIndex == 1)
        {
            dataGridView1.Rows[e.RowIndex].HeaderCell.Value = e.Value;
        }
    }
于 2012-12-17T15:23:19.807 回答