好吧,想想如何正确地提出问题。
我有一个返回一些反馈细节的数据表。该数据表包含两家公司的反馈。基于每个数据行中的指示符区分数据表的反馈。
转发器按日期顺序排序(最新的第一个)。如果公司是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的第一项(反馈)中呈现。我怎样才能实现这一目标?
答案 0 :(得分:2)
可以使用两种技术来完成基于数据格式化DataList或Repeater控件的内容。
第一种技术是为ItemDataBound事件创建一个事件处理程序,该事件处理程序在数据源中的每条记录绑定到新的DataListItem或RepeaterItem时触发。在ItemDataBound事件处理程序中,可以检查当前项的数据,然后格式化可以应用于模板的内容,或者对于DataListItems,可以应用于整个项本身。
或者,可以通过格式化功能实现自定义格式。格式化函数是一种可以从DataList或Repeater的模板调用的方法,该模板返回要在其位置发出的HTML。通常,格式化函数返回的HTML由绑定到当前项的值确定。这些值可以作为标量值传递到格式化函数中,也可以传入绑定到项目的整个对象(例如ProductsRow实例)。
答案 1 :(得分:1)
你可以尝试这样的事情......(丑陋的代码和未经测试)
HTML
...
<asp:HiddenField ID="hdnIsTitleRenderd" runat="server"/>
...
<强> CODE 强>
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