私はまだ DataBinder をどのように利用できるかを理解しようとしています ( ASPX ページの特定の配列のインデックスとして DataBinder.Eval ステートメントを使用する方法はありますか? )。
現在、リピーターを使用してテーブルを作成しています。アイテム ラベルを動的に定義するループを使用して、より多くの対話を可能にしたいと考えています。
現在、このテスト コードは機能しています。
<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 'Item' がないため、オーバーロードの解決に失敗しました:
「Public Overrides ReadOnly Property Item(name As String) As System.Object」: 最も具体的ではありません。
「Public Overrides ReadOnly Property Item(i As Integer) As System.Object」: 最も具体的ではありません。
何か案が?
編集:
マイク C の質問に答えるために、DataBinder.Eval(Container.DataItem, Test_idp)
代わりに試してみましたContainer.DataItem(Test_idp)
。それでも機能しませんが、エラーは異なります。
System.ArgumentNullException: 値を null にすることはできません