正確的語法假設你結合的的RepeaterItem的ItemDataBound事件處理程序數據源到GridView你就可以將一個處理器用於在GridView使用的AddHandler的RowCreated(或數據綁定)活動:
Private Sub rpt_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles rpt.ItemDataBound
If e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.Item Then
AddHandler gvTarget.RowCreated, AddressOf GridViewRowCreated
'Bind your Datasource to the GridView AFTER you wire it up:
'Dim gvTarget As GridView = CType(e.Item.FindControl("gv"), GridView)
'gvTarget.DataSource = lstYourDataSource
'gvTager.DataBind()
End If
End Sub
那麼你的事件處理程序GV的RowCreated可以從父的RepeaterItem獲得的價值:
Public Sub GridViewRowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
Dim lblHeader As Label = CType(e.Row.FindControl("lblGridViewHeader"), Label)
'Check due to Header/Footer.
If Not lblHeader Is Nothing Then
lblHeader.Text = DataBinder.Eval(CType(sender.Parent, RepeaterItem).DataItem, "MyRepeaterDataItem")
End If
End Sub
上面提到的代碼要求您將一個標籤添加到您的GridView的HeaderTemplate中:
<asp:GridView ID="gv" runat="Server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="lblGridViewHeader" runat="server"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
TEXT
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
或任意你可能只是這樣做在GridViewRowCreated:
e.Row.Cells(0).Text = DataBinder.Eval(CType(sender.Parent, RepeaterItem).DataItem, "MyRepeaterDataItem")
所以不能直接綁定到gridview? '<%#DataBinder.Eval(CType(sender.Parent,RepeaterItem).DataItem,「MyRepeaterDataItem」)%>' – Obsidian