首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-02-25 
GridView分页的时候让三天内发布的信息后加一个图片GridView分页的时候让三天内发布的信息后加一个图片突

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> 

热点排行