我正在使用.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();
}
结果是
收藏不能为空。参数名称:c
抛出dtvTest.DataBind()。
如果至少有一行它可以工作!! (见注释行)。
关于如何修复/解决它的任何想法?
非常感谢
答案 0 :(得分:1)
我在最近的一个项目中面临同样的问题我通过绑定空行集合来解决它,如下所示,(顺便说一下我在你的解决方案中编译它并且它工作得很好)
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();
}
并且无论您添加多少列,它仍然有效。
问候