绑定空数据表时的DetailsView错误

本文关键字:DetailsView 错误 数据表 绑定 | 更新日期: 2023-09-27 18:11:27

我正在使用。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不能为空。参数名称:c

在dtvTest.DataBind()上抛出。

如果至少有一行,它工作!!(见注释行)。

关于如何修复/工作周围的想法吗?

多谢

绑定空数据表时的DetailsView错误

我在最近的一个项目中遇到了同样的问题,我通过如下方式绑定空行集合来解决它,(顺便说一下,我在我们的解决方案中编译了它,它工作得很好)

 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();
    }

无论你添加多少列,它仍然有效。