リピータのItemTemplateに複数のテンプレートを定義して、それらの間を何らかの条件で切り替えることはできますか?実行時にリピータのItemTemplateを切り替える
は、私はその後、記事の一覧を表示するリピータを使用しますが、これが不可能な場合
(例えばポストを削除するためのLinkButtonコントロールが含まれている)、現在のユーザーに属する行の別のビューを持ちたいですリピーターのItemTemplate内でマルチビューコントロールを使用することは可能ですか?
リピータのItemTemplateに複数のテンプレートを定義して、それらの間を何らかの条件で切り替えることはできますか?実行時にリピータのItemTemplateを切り替える
は、私はその後、記事の一覧を表示するリピータを使用しますが、これが不可能な場合
(例えばポストを削除するためのLinkButtonコントロールが含まれている)、現在のユーザーに属する行の別のビューを持ちたいですリピーターのItemTemplate内でマルチビューコントロールを使用することは可能ですか?
私はItemTemplateに内部でMultiViewコントロールを使用しようと、それは非常によく働いていた、これは同じ問題を持つ人が役に立てば幸い:
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="<%# ((Post)Container.DataItem).Member.ID == CurrentMemberID ? 1 : 0 %>">
<asp:View ID="View1" runat="server"><!-- some links --></asp:View>
<asp:View ID="View2" runat="server"><asp:LinkButton CommandName="DeletePost" CommandArgument="<%# ((Post)Container.DataItem).Id %>" ID="LinkButton1" runat="server">Delete Post</asp:LinkButton></asp:View>
</asp:MultiView>
</ItemTemplate>
</asp:Repeater>
テンプレートを切り替えることができるかどうかわかりませんが、Repeater.OnItemDataBoundイベントが個々のリピータアイテムの表示を変更するのに最も役立つことがわかりました。現在のユーザーに基づいてリンクボタンを表示する。例えば
、...
protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LinkButton = e.Item.FindControl("btnDelete");
LinkButton.Visible = (e.Item.DataItem as DataRow)["CreatedBy"] == getCurrentUser();
}
は、一般的に私は、各リピータ項目の一貫性のあるデータのレイアウトを保持しCssStyleを変えることによって、視覚的外観を変更してテンプレート内のコントロールの表示プロパティ。根本的なレイアウト変更がある場合は、各レイアウトオプションをプレースホルダ内に配置し、ロジックを使用して表示するプレースホルダを決定します。