質問

カスタムのグリッドのようなコントロールで印刷する必要があるDateTimeオブジェクトがあります。 印刷するデータのタイプは、dd-mm-yyyy形式の日付です。 この値は、入力するか空白にすることができます。 満たされている場合、 DateTime に解析され、デフォルトの ToString として出力されます。

各行に使用できます

<CellTemplate>
    <asp:Literal ID="Literal2" runat="server" Text="<%# Container.Value %>"></asp:Literal>
</CellTemplate>

ただし、これは日付のデフォルトの長いバージョンを出力します。 ToShortDateString()の形式が欲しい。

だから私はに変更しようとしました:

<CellTemplate>
    <asp:Literal ID="Literal2" runat="server" Text="<%# Convert.ToDateTime(Container.Value).ToShortTimeString()%>"></asp:Literal>
</CellTemplate>

これは意図したとおりに機能します。

空の日付に問題があります

Convert.ToDateTime()

空の文字列では、デフォルトのDateTimeが出力されます。

空の文字列ではない場合に Convert.ToDateTime のみを実行するために、aspxコードでIf-Statementを作成する方法はありますか?

役に立ちましたか?

解決

Container.Value.Length > 0 ? Convert.ToDateTime(Container.Value).ToShortTimeString() : ""

また、 Container.Value を、定義したスコープ内の任意のメソッドに渡すことができるはずです。

他のヒント

コードビハインドで保護されたメソッドを使用して、チェックを行うことができます

protected static string ConvertDate(object date) {
    if (date == null)
       return string.Empty;
    return Convert.ToDateTime(date).ToShortTimeString();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top