SharePoint - integration of ajaxcontroltoolkit slideshowextender to sharepoint webpart

Asked By jeetender kaur on 22-Jul-09 07:54 PM

I am not able to add slideshow to sharepoint webpart. It didn't call the getslides service method.

I ma using following code:

using System;

using System.Runtime.InteropServices;

using System.Web;

using System.Web.UI.HtmlControls;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.Utilities;

using System.ComponentModel;

using System.Web.Services;

using AjaxControlToolkit;

using System.IO;

namespace myweb

{

[Guid("5600088c-afde-46f2-b60a-fee30aa657f2")]

public class myweb : System.Web.UI.WebControls.WebParts.WebPart

{

protected AjaxControlToolkit.SlideShowExtender SlideShowExtender22;

public myweb()

{

// this.ExportMode = WebPartExportMode.All;

}

protected override void CreateChildControls()

{

base.CreateChildControls();

Label newlabel = new Label(); newlabel.ID = "lblImageDescription";

this.Controls.Add(newlabel);

Image imageToDisplay = new Image();

imageToDisplay.ID = "Photo";

imageToDisplay.ImageUrl = HttpContext.Current.Request.Url.Scheme + System.Uri.SchemeDelimiter + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/images/sunset.jpg";

this.Controls.Add(imageToDisplay);

Button btn1 = new Button();

btn1.ID = "Btn_Next"; btn1.Text = ""; btn1.Width = 10;

this.Controls.Add(btn1);

Button btn2 = new Button();

btn2.ID = "Btn_Play"; btn2.Text = "Play"; btn2.Width = 10;

this.Controls.Add(btn2);


Button btn3 = new Button();

btn3.ID = "Btn_Previous"; btn3.Text = "Prev"; btn3.Width = 10;

this.Controls.Add(btn3);

try

{

SlideShowExtender22 = new AjaxControlToolkit.SlideShowExtender();

SlideShowExtender22.AutoPlay = true;

SlideShowExtender22.ImageDescriptionLabelID = "lblImageDescription";

SlideShowExtender22.Loop = true;

SlideShowExtender22.NextButtonID = "Btn_Next";

SlideShowExtender22.PlayButtonID = "Btn_Play";

SlideShowExtender22.PlayButtonText = "Play";

SlideShowExtender22.PreviousButtonID = "Btn_Previous";

SlideShowExtender22.SlideShowServiceMethod = "GetSlides";

SlideShowExtender22.StopButtonText = "Stop";

SlideShowExtender22.TargetControlID = "Photo";

SlideShowExtender22.PlayInterval = 3000;

SlideShowExtender22.TargetControlID = "Photo";

SlideShowExtender22.EnableClientState = true;

SlideShowExtender22.Enabled = true;

this.Controls.Add(SlideShowExtender22);

}

catch (Exception ex)

{

newlabel.Text = ex.Message;

}

}

[System.Web.Services.WebMethod]

[System.Web.Script.Services.ScriptMethod]

public static AjaxControlToolkit.Slide[] GetSlides()

{

return new AjaxControlToolkit.Slide[]

{

new AjaxControlToolkit.Slide("http://ausydapd14:36259/images/Winter.jpg" ,"Scenery2","Grass"),

new AjaxControlToolkit.Slide("http://ausydapd14:36259/images/sunset.jpg", "Scenery1", "Red Flower")

};

}

}

}


Please see if someone can help me. Thanks in advance :)

Look at this example

ram kumar replied to jeetender kaur on 22-Jul-09 08:34 PM

Hi,


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
    body
    {
      margin:50px 0px; padding:0px;
      text-align:center;
      }
     
    .Image
    {
          width:475px;
          margin:0px auto;
          text-align:center;
          padding:20px;
          border:1px dashed gray;
          background-color:Silver;
      }
 
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div class="Image">
             <asp:Image ID="img1" runat="server"
             Height="400px" Width="400px"
             ImageUrl="~/images/Autumn Leaves.jpg" />
        </div>       
        <cc1:SlideShowExtender ID="SlideShowExtender1" runat="server"
BehaviorID="SSBehaviorID"
            TargetControlID="img1"
            SlideShowServiceMethod="GetSlides"
            AutoPlay="true"
            ImageDescriptionLabelID="lblDesc"
            NextButtonID="btnNext"
            PreviousButtonID="btnPrev"
            PlayButtonID="btnPlay"
            PlayButtonText="Play"
            StopButtonText="Stop"
            Loop="true" >
        </cc1:SlideShowExtender>
        <div>
            <asp:Label ID="lblDesc" runat="server" Text=""></asp:Label><br />
            <asp:Button ID="btnPrev" runat="server" Text="Previous" />
            <asp:Button ID="btnPlay" runat="server" Text="" />
            <asp:Button ID="btnNext" runat="server" Text="Next" />
        </div>
    </div>
    </form>
</body>
</html>
 
As shown in the markup, the SlideShow requires a PageMethod called GetSlides that will be called to supply images. Add the following PageMethod GetSlides() in your Default.aspx.cs or .vb that returns a Slide array to the SlideShow Extender control


C#
    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    public static AjaxControlToolkit.Slide[] GetSlides()
    {
        AjaxControlToolkit.Slide[] imgSlide = new AjaxControlToolkit.Slide[4];
 
        imgSlide[0] = new AjaxControlToolkit.Slide("images/Autumn Leaves.jpg","Autumn","Autumn Leaves");
        imgSlide[1] = new AjaxControlToolkit.Slide("images/Creek.jpg","Creek","Creek");
        imgSlide[2] = new AjaxControlToolkit.Slide("images/Desert Landscape.jpg", "Landscape", "Landscape");
        imgSlide[3] = new AjaxControlToolkit.Slide("images/Dock.jpg","Dock","Dock");
 
        return (imgSlide);


Regards,

Rams

SharePoint - Microsoft SharePoint

jeetender kaur replied to ram kumar on 22-Jul-09 09:35 PM

Thanks Ram but i also used the same in .cs.

I am working on a custom webpart so can not add .aspx file.

but while implementing the above code, i got an error for javascript stating that _slides is null or not an objact.

my concern is that is there any other way to implement this as a customized webpart in sharepoint

OR is there any way to implement getslides as a simple method rather than system.web.script.service method.


resolved

jeetender kaur replied to jeetender kaur on 27-Jul-09 10:35 PM

Hi

I got the solution to integrate ajaxcontroltoolkit slideshow in sharepoint webpart.

I created a webservice which defines the getslides webmethod and pass this service name to my slideshowextender as "SlideShowServicePath".

Build assembly for webservice, add this to sharepoint website bin folder and deploy webpart solution to sharepoint website.