日期:2014-05-17  浏览次数:20466 次

求助 关于GridView的问题 绑定时如何IF多个选项

RT 
我数据库有两列 这样的数据列 
StartDate EndDate  
开始时间 结束时间

而 我的一个GirdView 上 有一个 状态列 State

  我想实现的这样的效果 
 当前时间在 开始时间和结束时间之前 时候 State 的列中显示的是 “未开始”

 当前时间在 开始时间和结束时间 其中 时候 State 的列中显示的是 “正在进行”

 当前时间在 开始时间和结束时间 之后 时候 State 的列中显示的是 “已经结束 ”

这样的话 我该在 绑定的时候 Eval(“”)? 这里该怎么写判断 
或者 大家有更好的实现方法 


效果如上 






------解决方案--------------------
在sql里比较方便 
select (case when getdate()<startdate then '未开始' when getdate()>enddate then '已经结束' else '正在进行' end ) state
------解决方案--------------------
反正就这几个方法

1。 GridView1_RowDataBound 里重新赋值
2。 后台写一个简单返回函数 前台绑定数据前面加个函数名即可
3。 sql语句里case判断 直接输出

都一样的道理 没啥方便麻烦的


------解决方案--------------------
<%# getStatue(Eval(startTime),Eavl(EndTime)) %>


后台方法
public string getStatue(object starttime,objject endtime)
{
//处理
}
------解决方案--------------------
C# code

protected void rep_Topic_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView dr = (DataRowView)e.Item.DataItem;
                           dr["你的字段"]  
}

------解决方案--------------------
在前台中
<%# GetDString(Eval(startTime),Eavl(EndTime)) %>


public string GetDString(object StarTime,Object EndTime)
{
DateTime dt=DataTime.Now.ToString("yyyy-MM-dd");
if(判断条件)
{
ReTurn "未开始";
}
else if(判断条件)
{
ReTurn "正在进行";
}

else if(判断条件)
{
ReTurn "已经结束";
}
else
ReTuen "":
}
------解决方案--------------------
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow) 
{
DataRowView dr = (DataRowView)e.Row.DataItem;
string starttime = dr["starttime"].ToString();
string endtitme = dr["endtitme"].ToString();
DateTime date = DateTime.Now;
//处理
e.Row.Cells[0].Text = "dd";
}
}