0

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値を処理するための適切な方法ですか?より良いテクニックはありますか?

ありがとう、

ラッセル

4

1 に答える 1

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

ただし、コードはそれを想定してPositionTitleおり、EffectiveDate決してそうなることはありませんnull。これがデータベースで強制されていない場合は、これらの状況に対処するためにコードにいくつかのチェックを追加できます。

于 2012-10-16T14:57:42.983 に答える