bxSlider停止工作2天前没有代码更改

时间:2013-12-17 17:11:22

标签: javascript jquery css sharepoint bxslider

我一直在用头发拉我的头发。我们在SharePoint 2013主页中实现了bxslider。这项工作是由我现在已经离职的同事完成的,所以不是我的工作,而是......它已经完成并正在运作。

现在虽然在调用onSliderLoad回调函数时遇到运行时错误,该函数调用了slider.goToNextSlide();

从调试输出窗口VS中提取: 0x800a138f - JavaScript运行时错误:无法获取未定义或空引用的属性“goToNextSlide”

我几乎排除了代码更改,因为我已经将源代码还原了几个月,并且还将一个非常旧的快照还原到了虚拟SharePoint服务器中。这些都仍然遇到同样的新问题。我也在我们的暂存服务器上尝试了这个技巧,该服务器暂时没有任何新发布的代码。该主机现在遇到同样的问题。我唯一能想到的是外部变化引起了这个问题,但我不知道。

我从Firebug和IE10中得到了不同的错误(你必须在IE中测试和调试它; - )

Firebug Errors

enter image description here

从FeedsRotator.ascx(Homepart.onpx上的Webpart)中提取

var slider= $('#slider2').bxSlider({
        auto: true,           
        controls: false,
        pager:false,
        pause: 10000,
        slideWidth: (sir ? sirina:300),
        slideHeight: 450,
        randomStart: true,
        autoHover: true,
        onSliderLoad: function (currentIndex) {
        slider.goToNextSlide(); //This is line 1024
        },

从BxSlider.css中提取

#slider1 {
margin:0;
padding:0;
}

.bx-wrapper {
position: relative;
margin: 10px;
padding: 0;
*zoom: 1;
}

.bx-wrapper img {
max-width: 100%;
display: block;
}

忘了说我们正在使用jquery 1.9.1。

1 个答案:

答案 0 :(得分:0)

所以,我完全用客户端代码咆哮错误的树。事实上,填充新闻滑块的Annoucements List项目已于5天前过期。

news list item 1 因此,webpart上的服务器端代码查询未返回任何数据的列表:

string Qry = " <Where><Geq><FieldRef Name='Expires' /><Value IncludeTimeValue='FALSE' Type='DateTime'>{0}</Value></Geq></Where>";

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!((Page)System.Web.HttpContext.Current.CurrentHandler).IsPostBack)
        {
            DisplayAnnouncements();
        }
    }
    private void DisplayAnnouncements()
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                {
                    SPList list = web.Lists["Announcements"];
                    SPQuery query = new SPQuery();
                    query.RowLimit = 10;
                    query.Query = string.Format(Qry, DateTime.Now.ToString("yyyy-MM-dd"));


                    rep1.DataSource = list.GetItems(query).GetDataTable();
                    rep1.DataBind();

                }
            }
        }
              );
    }

所以现在我必须决定如何处理这个

选项1(查找最近过期的公告):

private void DisplayAnnouncements()
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                {
                    SPList list = web.Lists["Announcements"];
                    SPQuery query = new SPQuery();
                    query.RowLimit = 10;
                    DateTime queryDate = DateTime.Now;

                    query.Query = string.Format(Qry, queryDate.ToString("yyyy-MM-dd"));

                    while (list.GetItems(query).Count == 0 && queryDate > new DateTime(2000, 1, 1)) //Stop an infinitive loop where list is empty
                    {
                        TimeSpan oneDay = new TimeSpan(1, 0, 0, 0);
                        queryDate = queryDate - oneDay;
                        query = new SPQuery() { Query = string.Format(Qry, queryDate.ToString("yyyy-MM-dd")) };
                    }

                    rep1.DataSource = list.GetItems(query).GetDataTable();
                    rep1.DataBind();

                }
            }
        }
              );
    }

选项2(显示无新闻)

private void DisplayAnnouncements()
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                {
                    bool oldAllowUnsafeUpdates = web.AllowUnsafeUpdates; 
                    web.AllowUnsafeUpdates = true; 
                    web.Update(); 

                    SPList list = web.Lists["Announcements"];
                    SPQuery query = new SPQuery();
                    query.RowLimit = 10;
                    DateTime queryDate = DateTime.Now;

                    query.Query = string.Format(Qry, queryDate.ToString("yyyy-MM-dd"));

                    if (list.GetItems(query).Count == 0)
                    {
                        SPListItem noNewsListItem = list.AddItem();

                        noNewsListItem["Title"] = "NoCurrentNews";
                        noNewsListItem["MainDisplayImage"] = "<img src=\"/sites/OMGIntranet/SiteAssets/NO-CURRENT-NEWS-STORIES.jpg\"></img>";
                        noNewsListItem["Expires"] = DateTime.MaxValue;

                        noNewsListItem.Update();
                    }

                    rep1.DataSource = list.GetItems(query).GetDataTable();
                    rep1.DataBind();

                    web.AllowUnsafeUpdates = oldAllowUnsafeUpdates;
                }
            }
        }
              );
    }