我已经看过许多如何使用Entity Framework填充网格视图的示例。但是,在将结果填充到网格视图之前,我正在努力弄清楚如何操作数据。我发现工作的唯一另一种方法是创建一个SQL存储过程并在那里进行格式化。但是,寻找一种我可以直接从表中读取而无需存储过程的解决方案。
我基本上有一个简单的网格视图,其中包含两列(日,时间),其数据如下所示:
使用Entity Framework填充此数据时,时间为24 HR格式。我希望它们以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 :(得分:0)
对于有类似问题的任何人,这里是我如何达到预期结果的代码。来自DB的数据采用SQL TIME(7)格式。所以我必须先转换为日期时间,以便正确格式化字符串。
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