2017-08-10 8 views
0

Entity Frameworkを使用してグリッドビューにデータを設定する方法の多くの例を見てきました。しかし、グリッドビューに結果を入力する前に、データを操作する方法を理解するのは苦労しています。私が動作することが判明した唯一の他の方法は、SQLストアドプロシージャを作成し、そこでフォーマットを行うことです。しかし、私はストアドプロシージャの必要なしにテーブルから直接読むことができるソリューションを探しています。Entity Framework - GridviewでSQL時刻(7)列を整形する

Entity Frameworkのを使用してこのデータを取り込む、時間は24時間形式である:

私は基本的に次のようになり、データを持つ2つの列(日、時間)を持つ単純なグリッドビューを持っています。私はそれらを12人のHR形式で表示したいと思います。

ここは私の現在のコードです。

try 
{ 
    using (DemoEntities context = new DemoEntities()) 
    { 
     grdMonday.DataSource = context.TimeSlots.Where(t => t.numericDay == 2).ToList(); 
     grdMonday.DataBind(); 
    } 
} 
catch (Exception ex) 
{ 
    var errMsg = ex.Message; 
} 
+0

あなたが設定データではなくグリッド内の書式。 – DavidG

+0

ありがとうDavidG、私はグリッドで書式設定を読み上げます。あなたが記事/解決された解決策を知っているなら、分かち合ってください。 –

+0

https://stackoverflow.com/questions/22449788/date-format-without-time-in-asp-net-gridview –

答えて

0

同様の問題が発生した場合は、以下のコードを参考にしてください。 DBからのデータはSQL TIME(7)形式です。だから私は文字列を正しくフォーマットするために、datetimeに最初に変換しなければなりませんでした。

のGridView:機能の後ろ

<asp:GridView runat="server" ID="grdMonday" CssClass="table" AutoGenerateColumns="false"> 
     <Columns> 
      <asp:BoundField DataField="day" HeaderText="Day Name" /> 
      <asp:TemplateField HeaderText="Time"> 
       <ItemTemplate> 
        <asp:Label runat="server" Text='<%# FormatTime(Eval("time")) %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
     <EmptyDataTemplate> 
      No Times Found. 
     </EmptyDataTemplate> 
</asp:GridView> 

コード:

protected string FormatTime(object timeValue) 
{ 
    if (Convert.IsDBNull(timeValue)) 
    { 
     return ""; 
    } 
    else 
    { 
     TimeSpan asTime = (TimeSpan)timeValue; 
     DateTime asDate = Convert.ToDateTime(asTime.ToString()); 
     string time = asDate.ToString("%h:mmtt"); 

     return time; 
    } 
} 

結果:(私は画像を表示するのに十分な担当者のポイントを持っていない...) Result

関連する問題