【问题标题】:DetailsView converts TextBoxes empty string to nullDetailsView 将 TextBoxes 空字符串转换为 null
【发布时间】:2011-10-26 14:31:18
【问题描述】:

我有一个基本的 ASP.NET Web 窗体应用程序。

我让用户可以使用 Web 表单 创建记录并使用 DetailsView 更新它们。

Web 表单将 TextBoxes 上的空字段作为 *empty string*g 正确存储在 DB 中。

DetailsView 将它们作为 null 字段存储在数据库中。

此外,如果我检查 e.newvaluese.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 &nbsp;</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


【解决方案1】:

我通过将 ConvertEmptyStringToNull="false" 放置到每个包含 &lt;asp:TextBox&gt;&lt;asp:TemplateField&gt; 来解决它:

<asp:TemplateField ConvertEmptyStringToNull="false"> 
   <HeaderTemplate>Stock Shelf &nbsp;</HeaderTemplate> 
   <ItemTemplate>&nbsp;<%# Eval("Shelf") %></ItemTemplate> 
   <EditItemTemplate> 
     <asp:TextBox runat="server" ID="txtShelf" Text='<%# Bind("Shelf") %>' >
     </asp:TextBox> 
   </EditItemTemplate> 
</asp:TemplateField>

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 2022-01-08
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多