将 SQL NULL 绑定到 ASP.NET 控件的正确方法



我有一个绑定到 SQL 结果的 ASP.NET 控件:

<asp:GridView ID="EmployeeSearchResults" runat="server" AutoGenerateColumns="False" >
  <Columns>
    <asp:TemplateField HeaderText="Status" SortExpression="Status">
      <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# (EmployeeSearchStatus(Eval("SeparationDate"),Eval("PositionTitle"),Eval("EffectiveDate"))) %>'></asp:Label>
      </ItemTemplate>
    </asp:TemplateField>                                                
  </Columns>
</asp:GridView>

我的 EmployeeSearchStatus 函数非常基本,它测试传入的 NULL 值,并创建一个字符串来显示:

Public Function EmployeeSearchStatus(ByVal SeparationDate As Object, ByVal PositionTitle As Object, ByVal EffectiveDate As Object) As String
  Dim ReturnString As String = ""
    If IsDBNull(SeparationDate) Then
      ReturnString = "Currently Employed as "
    Else
      ReturnString = "Last Employed as "
    End If
    ReturnString += PositionTitle
    If IsDBNull(SeparationDate) Then
        ReturnString += " (effective " + EffectiveDate + ")."
    Else
        ReturnString += " (separated on " + SeparationDate + ")."
    End If
    Return ReturnString
End Function

这是处理从 SQL 返回到 ASP.NET 控件的 NULL 值的正确方法吗? 有没有更好的技术?

谢谢

罗 素

你的代码看起来不错,尽管如果你愿意,你可以稍微简化一下:

Public Function EmployeeSearchStatus(ByVal SeparationDate As Object, ByVal PositionTitle As Object, ByVal EffectiveDate As Object) As String
    If IsDBNull(SeparationDate) Then
        Return "Currently Employed as " + PositionTitle + " (effective " + EffectiveDate + ")."
    Else
        Return "Last Employed as " + PositionTitle + " (separated on " + SeparationDate + ")."
    End If
End Function

但是,代码确实假设PositionTitleEffectiveDate永远不会null。如果未在数据库中强制执行,则可以向代码添加一些检查来处理这些情况。

最新更新