0

好的,只是想着如何正确地提出问题。

我有一个返回一些反馈详细信息的数据表。数据表包含两家公司的反馈。数据表的反馈根据每个数据行中的一个指标来区分。

中继器按日期顺序排序(最新的优先)。如果公司是 A 和 B,则 A 公司的反馈将始终列在最前面,因为它们是最新的。如果列出的反馈是 B 公司的反馈,我已经渲染了一张图片和一些措辞。

Public Function RenderTitle(ByVal objItem As Object) As String
        Select Case objItem
            Case 1
                Return String.Empty
            Case 0
                Return "Feedback below obtained whilst a member of our sister company  " & "<img src=""../img/logo.png"" />"
            Case Else
                Return String.Empty
        End Select
    End Function 

如果反馈属于 B 公司,则会呈现标题。

问题:我不希望在 B 公司的所有项目中呈现标题。我希望它只在属于 B 公司的第一个项目(反馈)中呈现。我该如何实现呢?

4

2 回答 2

2

根据数据格式化 DataList 或 Repeater 控件的内容可以通过使用两种技术来完成。

第一种技术是为 ItemDataBound 事件创建一个事件处理程序,该事件在数据源中的每条记录绑定到新的 DataListItem 或 RepeaterItem 时触发。在 ItemDataBound 事件处理程序中,可以检查当前项目的数据,然后可以将格式应用于模板的内容,或者对于 DataListItems,应用于整个项目本身。

或者,可以通过格式化函数来实现自定义格式化。格式化函数是一种可以从 DataList 或 Repeater 的模板调用的方法,该模板返回要在其位置发出的 HTML。通常,格式化函数返回的 HTML 由绑定到当前项的值决定。这些值可以作为标量值或通过传入绑定到项目的整个对象(例如 ProductsRow 实例)传递给格式化函数。

http://msdn.microsoft.com/en-us/library/bb510136.aspx

于 2012-09-12T15:18:18.357 回答
1

你能试试这样的东西吗......(丑陋的代码和未经测试)

HTML

...
<asp:HiddenField ID="hdnIsTitleRenderd" runat="server"/>
...

代码

Page_Load()
    If Not IsPostBack
         hdnIsTitleRenderd.Value = "False"
    End If
End  Sub 

Public Function RenderTitle(ByVal objItem As Object) As String
       Select Case objItem
            Case 1
                Return String.Empty
            Case 0
                If Convert.ToBoolean(hdnIsTitleRenderd.Value) = False
                       hdnIsTitleRenderd.Value = "True"
                       Return "Feedback below obtained whilst a member of our sister company  " & "<img src=""../img/logo.png"" />"
                Else
                    Return String.Empty
                End If
            Case Else
                    Return String.Empty
        End Select
End Function 
于 2012-09-12T16:35:11.360 回答