我有另一篇文章,我实施了用户建议的更改,因此修复了我的问题,能够更新我的列表视图,但我仍然收到以下错误
无法将值NULL插入列' module_desc',表' E:\ SVN 网站拷贝\ CIT \ CIT5 \ APP_DATA \ UNIDB.MDF.dbo.modules&#39 ;;专栏 不允许空值。更新失败。声明已经终止。
以下是我目前的代码......
asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"
SelectCommand="SELECT [module_id], [module_name], [module_desc], [module_units]
FROM [modules]"
UpdateCommand="UPDATE [modules] SET [module_name]= @Module_Name, [module_desc]=@Module_Description,
[module_units]=@Module_Units WHERE [module_id] = @Module_ID" >
<UpdateParameters>
<asp:Parameter Name="Module_Name" Type="String" />
<asp:Parameter Name="Module_Description" Type="String" />
<asp:Parameter Name="Module_Units" Type="Int32" />
<asp:Parameter Name="Module_ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="Module_ID">
一切似乎都是完美的代码,因此我不确定如何解决这个问题。
任何帮助都会很棒......
RD
答案 0 :(得分:0)
您的错误消息是自解释的,列module_desc
不允许空值。要么必须允许列中的空值,要么传递默认值。我怀疑您的代码正在发生的是用户正在输入一个空文本,默认情况下SqlDataSource
控制将其转换为Null
。您必须将属性ConvertEmptyStringToNull
设置为false,如下所示: -
<UpdateParameters>
<asp:Parameter Name="Module_Name" Type="String" />
<asp:Parameter Name="Module_Description" Type="String" ConvertEmptyStringToNull="false"/>
<asp:Parameter Name="Module_Units" Type="Int32" />
<asp:Parameter Name="Module_ID" Type="Int32" />
</UpdateParameters>
这不会将空文本转换为Null
,并且会在数据库中更新空文本而不是Null
。