1

あなたが貢献しているメンバーであるすべてのサイトのすべてのアナウンスを収集して表示する WebPart をコーディングしようとしています。Upcoming と Past の 2 つのリストビューでそれらを表示する必要があります。

私はすべて働いています...それはすべての適切なアナウンスを取得し、それらを適切なリストビューに入れます。Upcoming リスト ビューには今後のすべてのお知らせが表示され、過去の livst ビューには過去のすべてのお知らせが表示されます。

私が抱えている問題は次のとおりです。各リスト ビューに 10 個のアイテムのみを表示し、さらにページを表示するデータページャーを使用したいと考えています。

それぞれがそれぞれのリストを指している 2 つのデータページャーを追加すると、1 ~ 10 が表示されますが、さらに表示するための矢印が機能しません。実際、ファンキーな表示になります。

クリック後: < > < 1 - 10 >

もう一度クリック: < < > > < 1 - 10 >

ascx ファイル:

<div class="announcement-upcming">
        <asp:ListView ID="UpcmingListView" ItemPlaceholderID="UpcmingItem" OnItemDataBound="UpcmingItemDataBound"
            runat="server">
            <LayoutTemplate>
                <ul class="aggregation announcement upcming"> 
                <asp:PlaceHolder runat="server" ID="UpcmingItem"></asp:PlaceHolder>
                </ul>
            </LayoutTemplate>
            <ItemTemplate>
                <li class="item announcement upcming" id="liItem" runat="server"><a id="aLink" class="item-title" runat="server"></a>
                    <div style="font-size: 80%">
                        <a id="aSiteLink" target="_blank" runat="server"></a>
                    </div>
                    <div id="expireDate" runat="server" style="font-size: 80%"></div>

                </li>
            </ItemTemplate>
        </asp:ListView>
        <asp:Panel ID="pnlEmptyUpcming" CssClass="no-items" Visible="false" runat="server">
            <ul class="aggregation announcement upcming">
                <li>You have no upcoming announcements. </li>
            </ul>
        </asp:Panel>
        <center>
            <asp:datapager id="UpcmingListingDataPager" pagedcontrolid="UpcmingListView" runat="server">
                <fields></fields>
            </asp:datapager>
        </center>
    </div>

分離コード (ascx.cs ファイル):

private void BuildUpcmingPagingControlFields()
{
    PagingControlTemplate pagingControl = new PagingControlTemplate();
    TemplatePagerField field = new TemplatePagerField();
    field.PagerTemplate = pagingControl;

    UpcmingListingDataPager.PageSize = NumberOfUpcmingItems;

    if (UpcmingListingDataPager.PageSize < (UpcmingListingDataPager.TotalRowCount + 1))
    {
        UpcmingListingDataPager.Fields.Add(pagingControl.GetBegginingPagerField());
        UpcmingListingDataPager.Fields.Add(field);
        UpcmingListingDataPager.Fields.Add(pagingControl.GetEndingPagerField());
    }
    else
    {
        UpcmingListingDataPager.Fields.Add(field);
    }

        UpcmingListView.DataBind();
        UpcmingListView.PagePropertiesChanged += UpcmingListing_PagePropertiesChanged;
}

protected void UpcmingListing_PagePropertiesChanged(object sender, EventArgs e)
{
    this.UpcmingListView.DataBind();
}

protected void UpcmingItemDataBound(object obj, ListViewItemEventArgs ea)
{
    try
    {
        DatedItem item = (DatedItem)(((ListViewDataItem)ea.Item).DataItem);
        HtmlControl li = (HtmlControl)ea.Item.FindControl("liItem");
        HtmlAnchor announcementAnchor = (HtmlAnchor)ea.Item.FindControl("aLink");
        HtmlAnchor siteAnchor = (HtmlAnchor)ea.Item.FindControl("aSiteLink");
        HtmlGenericControl expireAnchor = (HtmlGenericControl)ea.Item.FindControl("expireDate");

        DateTime ItemDate = item.Date;
        DateTime Tomorrow = DateTime.Now.AddDays(1);

        announcementAnchor.InnerText = item.Title;

        Uri SiteUri = new Uri(item.Url);
        if (item.Url.Contains("/Lists"))
        {
            siteAnchor.HRef = SiteUri.AbsoluteUri.Remove(SiteUri.AbsoluteUri.IndexOf("/Lists"));
            using (SPSite announceSite = new SPSite(SiteUri.AbsoluteUri.Remove(SiteUri.AbsoluteUri.IndexOf("/Lists"))))
            {
                siteAnchor.InnerText = announceSite.RootWeb.Title;
            }
        }
        else
        {
            siteAnchor.HRef = SiteUri.AbsoluteUri.Remove(SiteUri.AbsoluteUri.IndexOf("/Announcements"));
            using (SPSite announceSite = new SPSite(SiteUri.AbsoluteUri.Remove(SiteUri.AbsoluteUri.IndexOf("/Announcements"))))
            {
                siteAnchor.InnerText = announceSite.RootWeb.Title;
            }
        }

        if ((ItemDate == null) || (ItemDate == DateTime.MaxValue))
        {
            expireAnchor.InnerText = "Never expires";
        }
        else if ((ItemDate.Year == Tomorrow.Year) && (ItemDate.Month == Tomorrow.Month) && (ItemDate.Day == Tomorrow.Day))
        {
            expireAnchor.InnerText = "Expires tomorrow";
        }
        else
        {
            expireAnchor.InnerText = "Expires " + item.Date.ToString("MMMM d, YYYY");
        }

        announcementAnchor.InnerText = item.Title;
        announcementAnchor.HRef = item.Url;
        announcementAnchor.Attributes.Add("onclick", string.Format("return OpenDialog('{0}');", item.Url));
    }
    catch (Exception ex)
    {
        Logger.DefaultLogger.LogToOperations(ex);
    }
}

protected void PopulateUpcmingAnnouncements(List<DatedItem> Announcements)
{
    if (Announcements != null)
    {
        List<DatedItem> upcmingAnnouncements = Announcements.Where(i => i.Date >= DateTime.Today).ToList();
        upcmingAnnouncements = upcmingAnnouncements.OrderBy(t => t.Date).ToList();

        if (upcmingAnnouncements.Count == 0)
        {
            pnlEmptyUpcming.Visible = true;
            UpcmingListView.Visible = false;
            UpcmingListingDataPager.Visible = false;
        }

        UpcmingListView.DataSource = upcmingAnnouncements;
        UpcmingListView.ItemDataBound += UpcmingItemDataBound;
        UpcmingListView.DataBind();
        NumberOfUpcmingItems = upcmingAnnouncements.Count;
    }
    else
    {
        pnlEmptyUpcming.Visible = true;
        UpcmingListView.Visible = false;
        UpcmingListingDataPager.Visible = false;
    }
}

protected override void OnPreRender(EventArgs e)
{
    base.OnInit(e);
    try
    {
        {{{Code that gets announcements and places the in TheseAnnouncements}}}

        PopulateUpcmingAnnouncements(TheseAnnouncements);
        PopulatepstAnnouncements(TheseAnnouncements);
    }
    catch (Exception ex)
    {
        Logger.DefaultLogger.LogToOperations(ex);
    }
}
4

0 に答える 0