gridview绑定之后,要根据具体情况来显示某列的信息,应该怎么设置这个列?用模板列吗?
gridview绑定之后,要根据查询里面的两个时间字段的值,分别和现在的时间做比较,然后显示不同的信息,应该怎么设置这个列?用模板列吗?
比如:
end_time如果在当前时间之前,那么就显示“过期”;否则,如果start_time在当前时间之前,那么就显示“未到”,否则,显示“进行中”
------解决方案--------------------自定义列的绑定~
<asp:TemplateColumn Visible=false>
<HeaderTemplate>
<b> 开始时间~ </b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Text= ' <%# DataBinder.Eval(Container.DataItem, "开始时间 ").ToString().Trim() %> ' runat= "server " ID= "LblstrTime "/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn Visible=false>
<HeaderTemplate>
<b> 结束时间~ </b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Text= ' <%# DataBinder.Eval(Container.DataItem, "结束时间 ").ToString().Trim() %> ' runat= "server " ID= "LblendTime "/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
<b> 过期与否 </b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Height= "20 " width= "100px " runat= "server " ID= "Label1 "/>
</ItemTemplate>
</asp:TemplateColumn>
在ItemDataBound事件中
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) {
Label lbltime=(Label)e.Item.FindControl( "LblstrTime ");
Label lbltime=(Label)e.Item.FindControl( "LblendTime ");
Label guoqi=(Label)e.Item.FindControl( "Label1 ");
if(与开始时间比较)
{
guoqi.Text= "未到 "
}
else if(与结束时间比较)
{
guoqi.Text= "过期 "
}
else
{
guoqi.Text= "进行中 "
}
}
------解决方案--------------------用datatable对数据进行一次重填充
DataSet ds = new DataSet();
// ds =.......数据集填充
DataTable test = new DataTable();
//列
DataColumn dcldate = new DataColumn( "date ",typeof(string));
test.Columns.Add(dcldate);
//行
foreach (DataRow row in ds.Tables[0].Rows)
{
if (Convert.ToDateTime(ds.Tables[0].Rows[ "数据库中的时间列 "]) > DateTime.Now)
{
row[ "date "] = "进行中 ";
}
else
{
row[ "date "] = "已结束 ";
}
test.Rows.Add(row);
}