【问题标题】:Transform empty string to null in data bound textbox在数据绑定文本框中将空字符串转换为 null
【发布时间】:2011-06-30 11:23:29
【问题描述】:

我在表单视图中有一个文本框,它从用于输入日期的 linqdatasource 获取其数据:

<SP:TextBox ID = "StartDate" 
            Type = "Date" 
            Runat = "server" 
            Text = '<%# Bind("StartDate", "{0:yyyy-MM-dd}") %>' />

它工作正常,除非 StartDate 是数据库中的空值。然后 StartDate 文本框为空,这是正确的,但是当将空字段保存回数据库时,将存储日期 0001-01-01 而不是错误的空值。如何检测这种情况并在保存之前将空字符串转换为空值?

【问题讨论】:

    标签: asp.net sharepoint data-binding string


    【解决方案1】:

    解决方法是为可为空的列添加参数并将ConvertEmptyStringToNull设置为true:

    <asp:LinqDataSource ID="LinqDataSource1" runat="server"
        ContextTypeName="NullUpdateRepo.DatabaseLinqDataContext" EnableUpdate="True"
        TableName="SampleTables" OnSelected="OnSelected" OnContextCreated="OnContextCreated">
        <UpdateParameters>
            <asp:Parameter Name="firstname" Type="String" ConvertEmptyStringToNull="true" />
            <asp:Parameter Name="lastname" Type="String" ConvertEmptyStringToNull="true" />
        </UpdateParameters>
    </asp:LinqDataSource> 
    

    http://connect.microsoft.com/VisualStudio/feedback/details/296161/linqdatasource-and-null-column-values

    【讨论】:

      【解决方案2】:

      在后端插入日期值时给出如下:

         CASE WHEN StartDate='0001-01-01' THEN NULL ELSE StartDate END
      

      它将在表中存储NULL。

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 2022-01-08
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多