【发布时间】:2011-10-26 14:31:18
【问题描述】:
我有一个基本的 ASP.NET Web 窗体应用程序。
我让用户可以使用 Web 表单 创建记录并使用 DetailsView 更新它们。
Web 表单将 TextBoxes 上的空字段作为 *empty string*g 正确存储在 DB 中。
DetailsView 将它们作为 null 字段存储在数据库中。
此外,如果我检查 e.newvalues 和 e.oldvalues 参数,则在 DetailsView_ItemUpdated 事件中,相应的字段也为空(抛出一个例外),这意味着数据在提交时已经作为 null 发送到服务器。
在 DetailsView 中,我使用模板并将 SQLDataSource 中的所有更新参数设置为 ConvertEmptyStringToNull="false"。
SQLDataSource 参数:
<asp:Parameter Name="SHELF" Type="String" ConvertEmptyStringToNull="false"/>
详细信息视图
<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 就足够了,但显然还有其他一些惊喜。有人可以帮忙吗?
【问题讨论】:
-
你可能会从this相关帖子中找到一些东西
-
@EmmanuelN,感谢您的回答。我之前已经看过那个帖子,但没有答案
标签: asp.net binding detailsview string