2012-10-16 20 views
0

我有我已經綁定到一個SQL結果ASP.NET控件:將SQL NULL綁定到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值的正確方法嗎?有更好的技術嗎?

感謝,

羅素

+2

你不是真的在這裏使用經典的asp,是嗎?這看起來像.net。如果是這樣,你可能會更好地使用asp.net標記問題,而不是asp-classic – InSane

回答

0

您的代碼看起來不錯,雖然你可能把它簡化一點,如果你想:

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。如果這不是在數據庫中強制執行的,則可以在代碼中添加一些檢查來處理這些情況。

+0

謝謝Paul。我知道它的工作原理和認識簡化(謝謝)。這是處理空值的最優雅的方式嗎? :-) –

+0

我不知道這是**最優雅,但它看起來合適,可讀性和可維護性。我所能想到的唯一改變是將'IsDBNull'(這是VB特定的)更改爲'列是System.DbNull.Value',我相信它應該可以在所有.NET中工作。如果您稍後計劃將代碼重構爲另一種語言,這隻會相關。 – paul

+0

感謝Paul,C#可能會在我們的未來,所以我很欣賞前瞻性思維。 :-)羅素 –

相關問題