我按照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;
}
但现在,它根本不会添加标题,因为显然行会被删除并再次添加,从而失去属性(如果我错了,请纠正我,因为我不完全确定)。
有两种方法:维护行的标题并相应地对它们进行排序吗?
答案 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;
}
}