当绑定空数据表时,DetailsView存在什么 bug 吗?

4
我正在使用 .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(); 
}

结果是:
在 dtvTest.DataBind() 上抛出“集合不能为空。参数名:c”的异常。
如果至少有一行,它就能正常工作!(请参见注释行)。
您有什么解决/解决方法吗?
非常感谢。
1个回答

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

    }

无论您添加多少列,它仍然可以正常工作。

敬礼


感谢@King A.Majid。这不是解决方案,但对我有所帮助。我更新了acceptChanges标志,并在绑定detailsview后调用了reject changes(我不想要空行)。 - Stefano Altieri
很高兴,我们都在编程的同一个极客世界里。 - Adam
我认为我可能遇到了这个 bug ,我的问题在这里:http://stackoverflow.com/questions/23896437/insert-into-an-empty-database-table-using-asp-net - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接