使用asp.net插入空数据库表

时间:2014-05-27 18:25:23

标签: c# asp.net sql

从使用DetailsView控件的asp.net Web应用程序,我可以允许用户在我们的SQL数据库表中插入行。但是,如果表为空,则DetailsView将在更改为插入模式时抛出错误。 System.Collections.ArrayList.InsertRange(Int32 index, ICollection c) +10647211中出现错误:

  

说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.ArgumentNullException:Collection不能为null。参数名称:c

我可以手动创建DetailsView <EmptyDataTemplate>以插入到特定的表中,但我正在使用由用户即时选择的无数表。

我的DetailsView和GridView控件根据用户选择的表自动生成视图。我想要一个插入控件,它根据用户选择的表自动生成文本框/标签。

有没有办法避免为每个空表创建模板以允许插入?

编辑: 我的DetailsView控件使用的是LinqDataSource,如果我尝试绑定到空表,我会得到相同的ArugmentNullException错误。

2 个答案:

答案 0 :(得分:0)

使用FormView控件。如果表为空,它将允许您插入新行。

答案 1 :(得分:0)

我找到了自己的解决方法,这是一个难看的解决方案,但它会做到。

我添加了一些SQLDataSources,每当用户插入空表时插入临时虚拟记录。存在虚拟记录允许DetailsView控件到DataBind,然后在不再需要时将其删除。

此解决方案不适用于添加到数据库的任何新空表。即使在很短的时间内,拥有临时虚拟记录的效果也不为人所知。