1

さまざまなコンテンツコントロールでASP.NETコントロールを見つけようとするほど、イライラすることはほとんどありません。レイアウトについては、ListViewを1つのコンテンツコントロールに配置し、DataPagerとObjectDataSourceを別のコンテンツコントロールに配置する必要があります。

<asp:Content ID="cPagedContent" ContentPlaceHolderID="cphPagedContent" runat="Server">
<asp:MultiView ID="mvPagedContent" runat="server">
    <asp:View ID="mvPagedContentDefault" runat="server">
        <asp:ListView ID="lvPagedContent" runat="server" ItemPlaceholderID="itemPlaceholder">
            <LayoutTemplate>
                <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
            </LayoutTemplate>
            <ItemTemplate>
                <div class="hp-post-even">
                    <h2>
                        <a href="<%# Eval("QuickLink") %>">
                            <%# Eval("Title") %></a></h2>
                    <p>
                        <%# Eval("Html") %></p>
                </div>
            </ItemTemplate>
            <AlternatingItemTemplate>
                <div class="hp-post">
                    <h2>
                        <a href="<%# Eval("QuickLink") %>">
                            <%# Eval("Title") %></a></h2>
                    <p>
                        <%# Eval("Html") %></p>
                </div>
            </AlternatingItemTemplate>
        </asp:ListView>
    </asp:View>
    <asp:View ID="mvPagedContentTaxonomy" runat="server">
    </asp:View>
    <asp:View ID="mvPagedContentSearch" runat="server">
    </asp:View>
</asp:MultiView>
</asp:Content>
<asp:Content ID="cAboveFooter" ContentPlaceHolderID="cphAboveFooter" runat="Server">
<asp:MultiView ID="mvPager" runat="server">
    <asp:View ID="mvPagerDefault" runat="server">
        <asp:DataPager ID="dpContentPager" runat="server"
            PageSize="6">
            <Fields>
                <asp:NextPreviousPagerField ButtonType="Link" FirstPageText="[First]" PreviousPageText="[Prev]"
                    ShowNextPageButton="false" ShowLastPageButton="false" RenderDisabledButtonsAsLabels="true"
                    ShowFirstPageButton="true" />
                <asp:NumericPagerField ButtonCount="4" />
                <asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="false" ShowPreviousPageButton="false"
                    NextPageText="[Next]" LastPageText="[Last]" RenderDisabledButtonsAsLabels="true"
                    ShowLastPageButton="true" />
            </Fields>
        </asp:DataPager>
        <asp:ObjectDataSource ID="odsContent" runat="server" EnablePaging="true" MaximumRowsParameterName="maximumRows"
            SelectCountMethod="GetContentCount" SelectMethod="GetContent" StartRowIndexParameterName="startRowIndex" />
    </asp:View>
    <asp:View ID="mvPagerTaxonomy" runat="server">
    </asp:View>
</asp:MultiView>
</asp:Content>

私のC#ファイルで、ListViewコントロールを見つけることができます。しかし、ListViewに関連付けるDataPagerとObjectDataSourceが見つからないようです。

これがPage_Loadのスニペットです。

    ListView listView;
    ObjectDataSource objectDataSource;
    DataPager dataPager;

    listView = mvPagedContentDefault.Controls[0].FindControl("lvPagedContent") as  ListView;

    objectDataSource = mvPagerDefault.Controls[0].FindControl("odsContent") as ObjectDataSource;
    objectDataSource.TypeName = this.GetType().AssemblyQualifiedName;
    listView.DataSourceID = objectDataSource.ID;

    dataPager = mvPagerDefault.Controls[0].FindControl("dpContentPager") as DataPager;
    dataPager.PagedControlID = listView.ID;

これらの吸盤を見つける方法について何かアイデアはありますか?それは私を少し狂わせています。

4

1 に答える 1

0

問題がどこにあるのかわかりません。MultiViewあなたはコントロールへの参照を持っていますね?MultiViewコントロールViewsのコントロールのコレクションを返すプロパティがあります。とは両方とも最初のビューにありますViewDataPagerObjectDataSource

var dpContentPager = (DataPager)mvPager.Views[0].FindControl("dpContentPager");
var odsContent = (ObjectDataSource)mvPager.Views[0].FindControl("odsContent");

MSDNから:

PagedControlIDプロパティを使用して、DataPagerコントロールによってページングされるデータを含むコントロールのIDを指定します。指定されたコントロールは、IPageableItemContainerインターフェースを実装する必要があり、DataPagerコントロールと同じ名前付けコンテナーを使用する必要があります。指定できるコントロールの例は、ListViewコントロールです。

別のNamingContainerにある場合でも、リストビューを見つけるためDataPagerにオーバーライドを継承するカスタムページャーを作成してみることができます。FindPageableItemContainer

こちらをご覧ください:http://forums.asp.net/t/1458342.aspx/1

于 2012-04-21T23:13:39.233 に答える