当前位置: 代码迷 >> ASP.NET >> GridView分页的时候让三天内发布的信息后加一个图片,该如何解决
  详细解决方案

GridView分页的时候让三天内发布的信息后加一个图片,该如何解决

热度:4802   发布时间:2013-02-25 00:00:00.0
GridView分页的时候让三天内发布的信息后加一个图片
GridView分页的时候让三天内发布的信息后加一个图片突出显示,假设发布日期的字段为PublicTime,标题字段为Title,应该怎么写才能实现上面的功能

------解决方案--------------------------------------------------------
GridView本身应该做不到这一点,但你可以在数据源上做手脚。
假设你的数据库表中这条信息有一个PostTime字段。

你可以这样写数据源:
select 字段1,字段2,....,case when DataDiff(day,PostTime,GetDate())>=3 then '图片地址' else '' end 
from xxx.....
这样,你搜索出来的数据源中就多了一个字段,当时间差>3天时有一个图片地址,而<3天时为空串。
这样你应该会处理了吧?
------解决方案--------------------------------------------------------
如下代码可以使用

VB.NET code
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound        If e.Row.RowType = DataControlRowType.DataRow Then            Dim img1 As New Image            Dim UpdateTime As DateTime            img1.ImageUrl = "~/images/threeday.gif"            '显示三天内更新            If Not Convert.IsDBNull(DataBinder.Eval(e.Row.DataItem, "UpdateTime")) Then                UpdateTime = DataBinder.Eval(e.Row.DataItem, "UpdateTime")                Dim ts1 As New TimeSpan(UpdateTime.Ticks)                Dim ts2 As New TimeSpan(Now.Ticks)                Dim ts As TimeSpan = ts1.Subtract(ts2).Duration()                If ts.Days < 3 Then                    e.Row.Cells(5).Controls.Add(img1)                End If            End If        End If    End Sub
------解决方案--------------------------------------------------------
你可以这样写数据源: 
select 字段1,字段2,....,DataDiff(day,PostTime,GetDate()) as days from xxx..... 
这样,你搜索出来的数据源中就多了一个字段days,然后在信息后加个图片,建议用模板页
加上<img src='....' runat="server" visible='<%# Display(Eval("days"))%>'/>

后台CS
public bool Display(string days)
{
int day=int.parse(days);
if(day<=3)
return true;
else
return false;
}
------解决方案--------------------------------------------------------
HTML code
<asp:TemplateField>    <ItemTemplate>        <b><%# Eval("Title") %></b>        <asp:Image ID="imgNew" ImageUrl="Images/New.gif" runat="server" Visible='<%# Convert.ToDateTime(Eval("PublicTime")).AddDays(3) > DateTime.Now ? true : false %>'/>    </ItemTemplate></asp:TemplateField>