0

DateTime データ型の列があります。ASP.NETのGridViewで、この列の値をYes/Noで表示したいです。DateTimeフィールドが「Null」の場合は「いいえ」を表示し、Datetimeフィールド列が「Nullでない」場合はグリッドビューに「いいえ」を表示します。SQLクエリまたはGridViewバインディングのどちらで行うか。

GridView で試してみましたが、失敗しました。次のコードが間違っていることを知っています。SQLQuery で ISNULL をチェックしました。

<ItemTemplate>
       <asp:Label ID="lblOndate" runat="server" Text='<%# Convert.ToBoolean(Eval("OnDate")) ? "Yes" : "No" %>' ReadOnly="true">
       </asp:Label>
</ItemTemplate>

助けて感謝!前もって感謝します。

4

4 に答える 4

1

コードビハインドで関数を定義し、次のようにgeidview列のパラメーターで呼び出します。

<asp:TemplateField HeaderText="" HeaderStyle-HorizontalAlign="Center"
            ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:Label ID="lbl_SPORT_TYPE" runat="server" Text='<%#StatusName(Eval("SPORT_DATE")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

背後にあるコード:

Public Function StatusName(ByVal SportDate As DateTime?=nothing) As String
    If SportDate Is Nothing Then
        Return "yes"
    Else
        Return "no"
    End If
End Function
于 2012-10-01T07:42:53.783 に答える
1

1つの方法は次を使用していRowDataBoundます:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        DateTime? dt = row.Field<DateTime?>("OnDate");
        Label lblOndate = (Label)e.Row.FindControl("lblOndate");
        lblOndate.Text = dt.HasValue ? "Yes" : "No"; 
    }
}
于 2012-10-01T07:32:41.410 に答える
0

このプロパティは、グリッドビューのDateTimeフィールド列に使用できますNullDisplayText = "NO

于 2012-10-01T07:39:29.333 に答える
0

SQLをチェックせずにGridViewで実行できます。DBNull.Valueブール値に変換しようとするのではなく、GridViewでコードを修正して確認してください。

すなわち

<asp:Label ID="lblOndate" runat="server" Text='<%# Eval("OnDate") == DBNull.Value ? "No" : "Yes" %>' ReadOnly="true"></asp:Label>

于 2012-10-01T08:29:49.720 に答える