如果要把某个List的内容直接绑定到DGV,需要像下面这样做,否则内容无法显示出来:
struct ReportListStringItem
{
public string reportDate { get; set; }
public string projectName { get; set; }
public string taskName { get; set; }
public string timeSpent { get; set; }
public string activity { get; set; }
}
List<ReportListStringItem> repoortListString;
dgvHistory.AutoGenerateColumns = true;
dgvHistory.DataSource = repoortListString;
dgvHistory.ClearSelection();
如果上面绑定的List是一个没有内容的List,注意不是null,只是没有内容,在重新绑定之后如果点击DGV,会出现“索引-1没有价值”类似的异常,建议绑定前判断List至少有一项内容。
20120328 Update:
今天在CodeSmith生成的实体类中加了一个属性,但是怎么都显示不出来,后来看了看实体基类的代码,加上了下面的代码,ok了。
[Bindable(BindableSupport.Yes)]
public string CustomerName
{
get;
set;
}
20120710 Add:
今天再次碰到一个问题,在DataGridViewX(注意不是DataGridView)中有一个复选框列,要通过编程的方式选中复选框,但是搜索网上的文章,99%都提供的是类似这样的方法:
(dataGridView1.Rows[0].Cells[0] as DataGridViewCheckBoxCell).Value = true;
但是我反复试了都不行,最后在MSDN论坛上找到一个回复解决了这个问题,至于为什么上面这种做法不行也只能暂时存疑了。
这个方法就是在绑定的数据源当中加上一列专门用来绑定到复选框的数据列,类似这样:
[Bindable(BindableSupport.Yes)]