Hi All, Here is a way to Consume Web Service in AJAX SlideShowExtender Control using Context Key..
in .aspx page::
if (Request.QueryString["Id"] != null)
{
uint Id = Convert.ToUInt16(Request.QueryString["Id"].ToString());
SlideShowExtender1.ContextKey = Id.ToString(); //Passing the ID attribute Dynamically
}
------------------------------------------------------------------------------------
div align="center"
asp:Label runat="Server" ID="imageTitle" CssClass="slideTitle"
asp:Image ID="ImagePlayer" runat="server" Height="300" Style="border: 1px
solid black; width: auto"
asp:Label runat="server" ID="imageDescription" CssClass="slideDescription"
asp:Label
asp:Button runat="Server" ID="btnBack" Text="Prev" Font-Size="Larger"
asp:Button runat="Server" ID="btnPlay" Text="Play" Font-Size="Larger"
asp:Button runat="Server" ID="btnNext" Text="Next" Font-Size="Larger"
cc1:SlideShowExtender ID="SlideShowExtender1" runat="server" TargetControlID="ImagePlayer"
AutoPlay="True" Loop="True" NextButtonID="btnNext" PlayButtonID="btnPlay" PlayButtonText="Play"
PreviousButtonID="btnBack" SlideShowServiceMethod="GetSlides" SlideShowServicePath="~/Test.asmx"
StopButtonText="Pause" ImageDescriptionLabelID="imageDescription" ImageTitleLabelID="ImgTitle"
cc1:SlideShowExtender>
div
-------------------------------------------------------------------------------------
In .asmx(web service).cs page::
[WebMethod]
public AjaxControlToolkit.Slide[] GetSlides(string contextKey)
{
System.Web.UI.Page ObjUIPage = new System.Web.UI.Page();
int i = 0;
int j = 0;
//'The below line specifies the Directory to be used.Here the images are in images folder of my application
System.IO.DirectoryInfo DirInfo = new System.IO.DirectoryInfo(ObjUIPage.Server.MapPath("") + "\\PropertyUnitImages\\" + contextKey);
System.IO.DirectoryInfo[] subDirs = DirInfo.GetDirectories();
//'The below line gets the list of files in the directory specified above
System.IO.FileInfo[] Files = DirInfo.GetFiles();
//The below line gives the file count, which is useful to specify the size of array
j = Files.Length;
Slide[] mySlide = new AjaxControlToolkit.Slide[j + 1];
//System.IO.FileInfo di = default(System.IO.FileInfo);
//' This loop continues upto the last file in the directory
foreach (var d in Files)
{
mySlide[i] = new AjaxControlToolkit.Slide(d.FullName, d.Name, d.Name.Substring(0, d.Name.IndexOf(".")));
i = i + 1;
}
return mySlide;
//' this line sends the dynamically added details as AjaxControlToolkit.Slide
}
A word onContext Key property of SlideShowExtender:
The parameter is contextKey of type String. You can use contextKey in anyway you want, it is meant to pass information from the calling AJAX control to the web service. In this application, the parameter will be used to supply the directory for the slide show to be fed from. The return parameter is an array of Slides. The AJAX SlideShow control looks for this signature and the signature is case sensitive and exact. Don't try to change any of this syntax or your service not be called.
Thanks,
Nitin Sharma