实在想不出来了,关于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>