我正在使用.net 4.5,我发现了这种奇怪的行为:
标记:
<asp:DetailsView ID="dtvTest" AutoGenerateRows="true" DefaultMode="Insert" runat="server" />
码:
protected void Page_Load(object sender,EventArgs e) { DataTable dt = new DataTable("Test"); dt.Columns.Add("Column",typeof(string)); // If I uncomment the line it works! // dt.Rows.Add("row 1"); dtvTest.DataSource = dt; dtvTest.DataBind(); }
结果是
Collection cannot be null. Parameter name: c
抛出dtvTest.DataBind().
如果至少有一行它可以工作!! (见评论栏).
非常感谢
解决方法
我在最近的一个项目中遇到了同样的问题,我通过绑定空行colleciton解决了它,如下所示,(顺便说一句我在你的解决方案编译它,它工作得很好)
protected void Page_Load(object sender,EventArgs e) { DataTable dt = new DataTable("Test"); dt.Columns.Add("Column",typeof(string)); // If I uncomment the line it works! // dt.Rows.Add("row 1"); dt.LoadDaTarow(new string[1],true); dtvTest.DataSource = dt; dtvTest.DataBind(); }
而且无论您添加多少列,它仍然有效.
问候