DetailsView将TextBoxes空字符串转换为null

时间:2011-10-26 14:31:19

标签: asp.net binding detailsview string

我有一个基本的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 &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就足够了,但显然还有其他一些惊喜。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我通过将ConvertEmptyStringToNull =“false”放置到包含<asp:TemplateField>的每个<asp:TextBox>来解决它:

<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>