日期:2014-05-20  浏览次数:20452 次

实在想不出来了,关于datagrid的问题,请教高手啊!!!!
设计一个日程安排表..
比如里面现在有整个1月份的记录.
每天一条记录,按照日期排布.
现在要求在当天的日期处显示 "今天 ",当天的前一天显示 "昨天 ",当天的后一天显示 "明天 "..

例如:今天是1月24日,那么,日期栏要这么显示:

2007-1-1
2207-1-2
2007-1-3
...
2007-1-22
昨天
今天
明天
2007-1-26
2007-1-27
...

头都想大了,实在没办法了,请教各位高手啊.....

------解决方案--------------------
这是前台模板列: <asp:TemplateColumn> <ItemTemplate> <%#GetDate(Container.DataItem)%> </ItemTemplate> </asp:TemplateColumn> 这是后台处理函数 protected string GetDate(object o) { DataRowView row = (DataRowView)o; DateTime dt = (DateTime)row[ "dt "]; int tDay = DateTime.Now.Day; if (dt.Day == tDay) { return "今天 "; } else if (dt.Day == tDay - 1) { return "昨天 "; } else if (dt.Day == tDay + 1) { return "明天 "; } else return dt.ToString( "yyyy-MM-dd "); }
------解决方案--------------------
把你的for循环换成这个:
DataTable table = pnds.Tables[ "memo "];
table.Columns.Add( "strDate ", typeof(string));
DateTime curDate = DateTime.Now;
for (int i = 0; i <= table.Rows.Count - 1; i++)
{
curDate = DateTime.Parse(table.Rows[i][ "theDateColName "].ToString());
if (curDate.AddDays(1).Date = DateTime.Now.Date)
{
table.Columns[ "strDate "] = "昨天 ";
}
else if (curDate.Date = DateTime.Now.Date)
{
table.Columns[ "strDate "] = "今天 ";
}
else if (curDate.AddDays(-1).Date = DateTime.Now.Date)
{
table.Columns[ "strDate "] = "明天 ";
}
else
{
table.Columns[ "strDate "] = curDate.ToString( "yyyy-MM-dd ");
}
}
然后把模板列绑定到strDate列,普通的列也可以直接绑定到这列上,就可以了
------解决方案--------------------
后台:
public string GetDay(object container, string dayfield)
{
string Return = " ";
string Dayfield= DataBinder.GetPropertyValue(container, dayfield).ToString();
string day = DateTime.Parse(Dayfield).ToString( "yyyy-MM-dd ") ;
if ( day == DateTime.Now.ToString( "yyyy-MM-dd ") )
{
Return = " <span> 今天 </span> ";
}
if (day == DateTime.Now.AddDays(-1).ToString( "yyyy-MM-dd ") )
{
Return = " <span> 昨天 </span> ";
}
if (day == DateTime.Now.AddDays(1).ToString( "yyyy-MM-dd ") )
{
Return = " <span> 明天 </span> ";
}
return Return;
}

GridView 的模板列

<asp:TemplateField>
<HeaderTemplate> <span> 是否文件 </span> </HeaderTemplate>
<HeaderStyle Width= "60px " HorizontalAlign= "Center " />
<ItemStyle HorizontalAlign= "Center " />
<ItemTemplate>
<%# GetDay(Container.DataItem, "日期字段 ")%>
</ItemTemplate>
</asp:TemplateField>