我有一个基本的ASP.NET Web窗体应用程序。
我为用户提供了使用网络表单创建记录的可能性,并使用 DetailsView 更新记录。
网络表单正确地将文本框中的空字段存储为* 空strin * g。
DetailsView 会将其存储为数据库中的 null 字段。
此外,在 DetailsView_ItemUpdated 事件中,如果我检查 e.newvalues 和 e.oldvalues 参数,相应的字段也为空(投掷)例外)这意味着数据在提交时已经作为null发送给服务器。
在 DetailsView 中,我使用模板,并将 SQLDataSource 中的所有更新参数设置为 ConvertEmptyStringToNull =" false" 。
SQLDataSource参数:
<asp:Parameter Name="SHELF" Type="String" ConvertEmptyStringToNull="false"/>
的DetailsView
<asp:DetailsView runat="server"
ID="GvProductDetail" AutoGenerateRows="False" DataKeyNames="rowid"
DataSourceID="ProductDetailData"
OnItemUpdated="gvProductDetail_ItemUpdated">
<asp:TemplateField>
<HeaderTemplate>Stock Shelf </HeaderTemplate>
<ItemTemplate>
<%# Eval("Shelf") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtShelf" Text='<%# Bind("Shelf") %>' ></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
Bind是否可能将空值转换为null?我认为将UpdateParameters规则设置为不将空字符串转换为null就足够了,但显然还有其他一些惊喜。任何人都可以帮忙吗?
答案 0 :(得分:1)
我通过将ConvertEmptyStringToNull =“false”放置到包含<asp:TemplateField>
的每个<asp:TextBox>
来解决它:
<asp:TemplateField ConvertEmptyStringToNull="false">
<HeaderTemplate>Stock Shelf </HeaderTemplate>
<ItemTemplate> <%# Eval("Shelf") %></ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtShelf" Text='<%# Bind("Shelf") %>' >
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>