4

アクセスが制限されていて、適切なエラーログが表示されないサーバーでも、経験がなくてもASPとC#に関する問題が発生しました。したがって、混乱を招く可能性のある質問に備えてください:)

HTMLテンプレートにはループ(ASPリピーター)があり、テンプレートのHTMLの一部は、ループの最初の反復にのみ含める必要があります。残念ながら、他の反復ではhtmlを非表示にすることはできず、削除する必要があります。

したがって、本質的にこれを実行したい:

<% if (Container.ItemIndex == 0) { %>
    Lots of HTML here
<% } %>

問題は、これによりエラーが発生することです(ログが表示されないため、正確な理由がわかりません...)。ifステートメント自体が機能することを知っています(代わりに0 == 0を設定すると例として機能します)、ここではなく、通常どおりインデックスを取得できます。

だから問題は、どうやってこのようなことをするのかということです。C#ifステートメントのインデックスにアクセスできますか、それともリピーターに使用できるものが組み込まれていますか?

4

1 に答える 1

7

PlaceholderIf ステートメントを使用するのではなく、ASP.NET Web コントロール内に "0 インデックスのみ" のコンテンツを入れ子にvisible=trueし、最初の項目にのみ設定します。

@Amiramが述べたように、のことができます:

<asp:Placeholder id="ph" runat="server" visible="<%# (bool)(Container.ItemIndex==0) %>">
    ...0 Index only content
</asp:Placeholder>

または、イベントでこの値を設定visible="false"および変更します。ItemDataBound

if (e.Item.ItemIndex == 0){
   (placeholder)e.Item.FindControl("ph").visible = true;
}
于 2012-08-14T16:10:08.850 に答える