我仍在尝试了解如何利用 DataBinder(有没有办法使用 DataBinder.Eval 语句作为 ASPX 页面中特定数组的索引?)。
我目前正在中继器的帮助下构建表格,我想使用一个动态定义 Item 标签的循环,以允许更多交互。
目前,此测试代码正在运行:
<asp:Repeater id="Fish" runat="server">
<table>
<ItemTemplate>
<tr>
<td><%# Container.DataItem("ITEM")%></td>
<td><%# Container.DataItem("AGG")%></td>
</tr>
</ItemTemplate>
</table>
</asp:Repeater>
但正如您可以想象的那样,这种类型的结构不允许从要忽略的列中动态选择要显示的列。
我在想,通过使用“for”循环结构,我可以动态选择可以显示哪一列。我试过这个作为测试:
Public Test_id() As String
Public Test_idp As String
<% Test_id = New String() {"id", "Agg"} %>
<asp:Repeater id="Fish" runat="server">
<table>
<ItemTemplate>
<tr>
<% For Each Test_idp as String In Test_id%>
<td><%# Container.DataItem(Test_idp)%></td>
<% Next Test_idp%>
</tr>
</ItemTemplate>
</table>
</asp:Repeater>
这不起作用...并由以下错误消息授予:
重载解析失败,因为没有公共“项目”对这些参数最具体:
'Public Overrides ReadOnly Property Item(name As String) As System.Object':不是最具体的。
'Public Overrides ReadOnly Property Item(i As Integer) As System.Object':不是最具体的。
任何想法?
编辑:
为了回答 Mike C 的问题,我尝试DataBinder.Eval(Container.DataItem, Test_idp)
了而不是Container.DataItem(Test_idp)
. 它仍然不起作用,但错误不同:
System.ArgumentNullException:值不能为空