我要在列表中较新的新闻后面现实new图片我在.aspx的GridView里面调用<%#ShowNewPic(Eval("newsdate"))%>就可以正常判断
但在.ascx文件中同样调用<%#ShowNewPic(Eval("newsdate"))%>就没有反应???怎么解决?
代码如下:
    Public Function ShowNewPic(ByVal s As DateTime)
        If s.AddDays(1) > DateTime.Now Then
            Return "<img src='/images/new.gif' align='absmiddle'>"
        Else
            Return "<img src='/images/no.gif' align='absmiddle'>"
        End If
    End Function

解决方案 »

  1.   


    在ascx页面不能直接<%#ShowNewPic(Eval("newsdate"))%>这样写楼主应该好好了解下<%# %>和<%= %>这两个用法:
    <%# %>这个需要在后台绑定的。。如:<%# Eval("字段名")%>
    <%= %>这个需要在后台赋值的。。如:<%= 变量名 %>
      

  2.   


    <%=ShowNewPic(Eval("newsdate"))%>也不行啊
      

  3.   


    倒,这样当然不行了```
    <%= %>
    这个用法是需要在后台赋值例如:你在后台声明变量:public string text="";
    然后在page_load中给它赋值:text="sssssssssss";
    前台就可以直接<%=text%>这样用了
      

  4.   

    .ascx文件中数据控件和数据绑定写了吗?
      

  5.   


    用了标签,文字和连接都是没问题的<a href="/details.aspx?id=&&id,,,0&&"  title="&&title,,,0&&">&&title,,,50&&</a>&&id,,<img src="/images/new.gif">,0&&<%#ShowNewPic(Eval("newsdate"))%>
      

  6.   

    写一个RowDataBound事件:Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
        If e.Row.RowType = DataControlRowType.DataRow Then 
            If e.Row.FindControl("Image1") IsNot Nothing Then 
                Dim img As System.Web.UI.WebControls.Image = DirectCast(e.Row.FindControl("Image1"), System.Web.UI.WebControls.Image) 
                Dim drv As DataRowView = DirectCast(e.Row.DataItem, DataRowView) 
                
                If Convert.ToDateTime(drv.Row("s")).AddDays(1) > DateTime.Now Then 
                    img.ImageUrl = "images/new.gif" 
                Else 
                    img.ImageUrl = "images/no.gif" 
                End If 
            End If 
        End If 
    End Sub 
      

  7.   


    我在.aspx的GridView里面调用 <%#ShowNewPic(Eval("newsdate"))%>就可以正常判断 ,并且显示图片
    但在.ascx文件中同样调用 <%#ShowNewPic(Eval("newsdate"))%>就没有反应??? 
      

  8.   

    但在.ascx文件中同样调用  <%#ShowNewPic(Eval("newsdate"))%>就没有反应???  
    这种写法你没有绑定。所以Eval("newsdate")根本就取不到值
      

  9.   


    那为什么新闻的列表可以显示?而只是判断new的图片不能显示
      

  10.   


            Dim MyRe As SqlDataReader = MyCom.ExecuteReader
            Dim FileName As String = Server.MapPath("~/template/news1.ascx")
            dlNews.ItemTemplate = New TemplateClass(FileName, TemplateClass.tEnumFromType.FromFile)
            dlNews.DataSource = MyRe
            dlNews.DataBind()这个已经绑定到,ascx控件上了
      

  11.   

    我也建议在 RowDataBound 事件里处理。
      

  12.   

    问题现象:1如果直接帮定控件:
    GridView里面调用 <%#ShowNewPic(Eval("newsdate"))%>就能实现new!2但是通过,自定义ascx控件,调用就不能显示new图片,但数据还是可以显示!3数据已经绑定了
           Dim MyRe As SqlDataReader = MyCom.ExecuteReader 
            Dim FileName As String = Server.MapPath("~/template/news1.ascx") 
            dlNews.ItemTemplate = New TemplateClass(FileName, TemplateClass.tEnumFromType.FromFile) 
            dlNews.DataSource = MyRe 
            dlNews.DataBind() 
    4代码如下: 
        Public Function ShowNewPic(ByVal s As DateTime) 
            If s.AddDays(1) > DateTime.Now Then 
                Return " <img src='/images/new.gif' align='absmiddle'>" 
            Else 
                Return " <img src='/images/no.gif' align='absmiddle'>" 
            End If 
        End Function
      

  13.   

    试试把4代码的函改为: Public Function ShowNewPic(ByVal s As DateTime) As String
            Dim tempValue As String = String.Empty        If s.AddDays(1) > DateTime.Now Then
                tempValue = "  <img src='images/new.gif' align='absmiddle'>"
            Else
                tempValue = "  <img src='images/no.gif' align='absmiddle'>"
            End If
            Return tempValue
        End Function
      

  14.   

    看来c#和VB.Net的绑定区别在这里显现了,呵呵