我正在寻找一种格式化DataGridViewTextBoxColumn的方法,以便在数据绑定(bind)期间格式化要数据绑定(bind)的值。例如,我有一个CompanyName属性,发生数据绑定(bind)时,我需要从CompanyName中提取前5个字母。
我可以挂接不同的DataGridView事件(例如,Row Attached事件)并遍历所有行并完成窍门,但我想找到更复杂的方法来做到这一点。由于我决定使用数据绑定(bind),因此遍历数据并对其进行修改有点违反数据绑定(bind)的概念。
我要做的是如何与以下操作相同,但是添加自定义格式逻辑:
dataGridView1.Columns[colSomeDate.Index].DataPropertyName = "SomeDate";
colSomeDate.DefaultCellStyle.Format = "yyyy";
我认为我应该实现IFormatProvider,但是我不太了解如何实现它。
dataGridView1.Columns[companyName.Index].DataPropertyName = "CompanyName";
companyName.DefaultCellStyle.FormatProvider = new ShortText(); // ShortText should implement IFormatProvider
最佳答案
我不知道IFormatProvider,但是DataGridViews CellFormatting事件可以帮助您吗?
private void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
e.Value = e.Value.ToString().Substring(0, 5); // apply formating here
e.FormattingApplied = true;
}
}
http://msdn.microsoft.com/en-us/library/z1cc356h.aspx?ppud=4