谁会用Ajax的SlideShow控件?急用!

gaoweipeng7851 2008-10-27 05:55:54
高手帮帮我!
利用这个控件可以实现图片自动播放的功能

SlidShow控件:
<cc1:SlideShowExtender ID="SlideShowExtender1" runat="server"
TargetControlID="Image1"
SlideShowServicePath="WebService.asmx"
SlideShowServiceMethod="GetPhoto"
AutoPlay="true"
NextButtonID="nextButton"
PlayButtonText="播放"
StopButtonText="停止"
PreviousButtonID="prevButton"
PlayButtonID="playButton"
Loop="true"
PlayInterval="2000"/>
创建个web服务:
[WebMethod]
public Slide[] GetPhoto()//Slide[]
{
return
new AjaxControlToolkit.Slide[] {
new AjaxControlToolkit.Slide("upFile/高/图片窗/1.jpg", "Blue Hills", "Go Blue"),
new AjaxControlToolkit.Slide("upFile/高/图片窗/2.jpg", "Sunset", "Setting sun"),
new AjaxControlToolkit.Slide("upFile/高/图片窗/3.jpg", "Winter", "Wintery..."),
new AjaxControlToolkit.Slide("upFile/高/图片窗/4.jpg", "Water lillies", "Lillies in the water")};
}

但是我现在想从数据库中取出图片的名字,放到一个字符串数字组
这是我写的:
public Slide[] GetPhoto()
{
int i = 0;
Slide[] aa ={ };
string sql = "select 图片文件名称 from 图片表 where 图片窗编号='30000067'";
DAL.OperSql opsl = new DAL.OperSql();
DataSet dsPic = opsl.GetTable(sql, "图片表");
int PicCount = dsPic.Tables[0].Rows.Count;
string[] str = new string[PicCount];


for (i = 0; i < PicCount; i++)
{
str[i] = dsPic.Tables[0].Rows[i][0].ToString();
aa = new AjaxControlToolkit.Slide[] { new AjaxControlToolkit.Slide("upFile/高/图片窗/" + str[i], "", "") };

}
return aa;

但是只显示最后一张图,请问该怎么改啊??谢谢!
...全文
308 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyongbiao 2009-12-07
  • 打赏
  • 举报
回复
郁闷 系统框架应用SlideShow 点击左侧菜单居然被退出系统 咱回事哦
gjl_gjl 2009-06-06
  • 打赏
  • 举报
回复
学习一下子,正好迷茫呢
gaoweipeng7851 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 y_qingbin 的回复:]
主要在设置这个ContextKey,刚才我回复告诉我回复太快,呵呵
[/Quote]
还是有问题,您的categoryID 是分类编号吗?我是想选中一个tree节点时,将节点的value作为参数,webservice是在MissionTreeView_SelectedNodeChanged中调用的。而不是在页面加载的时候就调用,高手帮忙解决下,谢谢!分肯定都是你的
雨打青衫 2008-10-28
  • 打赏
  • 举报
回复
其实,不管你是使用什么控件来控制自动播放照片,实现方法都是一样的,你主要是把方法写好就行了,我给你的例子你可以自己研究下,实现代码已经很详细了!你不会要求我给你具体实现吧?那样的话你把需求直接发给我好了,呵呵
雨打青衫 2008-10-28
  • 打赏
  • 举报
回复
你就在方法中设置contextKey应该就可以了
mjjzg 2008-10-27
  • 打赏
  • 举报
回复
UP
雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
主要在设置这个ContextKey,刚才我回复告诉我回复太快,呵呵
雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
后台:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using AjaxControlToolkit;

public partial class PlayPhoto : System.Web.UI.Page
{
private int categoryID = -1;
protected void Page_Load(object sender, EventArgs e)
{
//获取当前分类的值
if (Request.Params["CategoryID"] != null)
{
categoryID = Int32.Parse(Request.Params["CategoryID"].ToString());
}
if(categoryID > 0)
{
//设置播放照片控件的属性
ssePhoto.AutoPlay = true;
ssePhoto.UseContextKey = true;
ssePhoto.ContextKey = categoryID.ToString();
return;
}
}
}

gaoweipeng7851 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 y_qingbin 的回复:]
仁者见仁,智者见智,我一般把要传的写到viewSate里,貌似这样

C# code
//获取总页码数量
if (ViewState[AjaxEBusinessSystem.TOTALPAGEINDEX] != null)
{
TotalPageIndex = Int32.Parse(ViewState[AjaxEBusinessSystem.TOTALPAGEINDEX].ToString());
}
[/Quote]

我现在是单击treeview的一个节点,将节点的value传到webservice中,value也就是分类编号
我单步执行了一下,值传进去了,但是执行后弹出对话框
The server method 'GetPhoto' failed with the following error:
System.InvaildOperationException-Invalid web service call,missing value for parameter:'SelectNode'-----也就是我那个参数。
请教如何解决啊??感激不尽!
雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PlayPhoto.aspx.cs" Inherits="PlayPhoto" StylesheetTheme="ASPNETAjaxWeb" %>

<%@ 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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

</div>
<asp:UpdatePanel ID="upForm" runat="server">
<ContentTemplate>
<table border="0" cellpadding="5" cellspacing="0" class="Table">
<tr>
<td align="center"><asp:Image ID="imgShow" Height="400" runat="server" /></td>
</tr>
<tr>
<td align="center"><asp:Label ID="lbShow" runat="server" CssClass="Title" ></asp:Label></td>
</tr>
<tr>
<td align="center">
<asp:Button ID="btnPrev" runat="server" Text="上一张" SkinID="btnSkin" Width="80px" />   
<asp:Button ID="btnPlay" runat="server" Text="开始" SkinID="btnSkin" Width="80px" />   
<asp:Button ID="btnNext" runat="server" Text="下一张" SkinID="btnSkin" Width="80px" />
</td>
</tr>
</table>
<cc1:SlideShowExtender ID="ssePhoto" UseContextKey="true" runat="server" TargetControlID="imgShow" AutoPlay="true" ImageDescriptionLabelID="lbShow" Loop="true" NextButtonID="btnNext" PreviousButtonID="btnPrev" PlayButtonID="btnPlay" PlayInterval="3000" PlayButtonText="开始" StopButtonText="停止" SlideShowServicePath="AjaxService.asmx" SlideShowServiceMethod="GetPhotoes">
</cc1:SlideShowExtender>

</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
上面的可能误导你,不好意思!我把这个方法写下来:

[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public AjaxControlToolkit.Slide[] GetPhotoes(string contextKey)
{ ///检测参数是否为空
if (string.IsNullOrEmpty(contextKey) == true) return null;
///获取参数的值,并转换为分类的ID值
int categoryID = -1;
if (Int32.TryParse(contextKey, out categoryID) == false)
{
return null;
}
///根据分类ID获取其照片
Album album = new Album();
DataSet ds = album.GetPhotoByCategory(categoryID);
if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) return null;
///创建被播放照片的数组
Slide[] photoes = new Slide[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{ ///创建一张照片的数组
Slide photo = new Slide();
photo.Name = photo.Description = ds.Tables[0].Rows[i]["Title"].ToString();
photo.ImagePath = ds.Tables[0].Rows[i]["Url"].ToString();
photoes[i] = photo;
}
return photoes;
}
雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
仁者见仁,智者见智,我一般把要传的写到viewSate里,貌似这样

//获取总页码数量
if (ViewState[AjaxEBusinessSystem.TOTALPAGEINDEX] != null)
{
TotalPageIndex = Int32.Parse(ViewState[AjaxEBusinessSystem.TOTALPAGEINDEX].ToString());
}
gaoweipeng7851 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 y_qingbin 的回复:]
类似这样,自己改一下应该就可以

C# code
DataSet ds = album.GetPhotoByCategory(categoryID);
if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) return null;
///创建被播放照片的数组
Slide[] photoes = new slide[PicCount];
for (i = 0; i < PicCount; i++)
{
Slide photo = new Slide();
photo.Name = photo.Description = ds.Tables[0].Rows[i]["Title"].ToString();
photo.…
[/Quote]

感谢贵人相助。还是对这个控件不了解!谢谢你!
还想请教个问题,c#在.cs页里的参数如何传到webService里啊??
我想给上面的方法传个参数

在.cs里声明了
WebService ws = new WebService();
ws.GetPhoto(SelectNode);

但是参数传不过去啊~!帮帮忙
雨打青衫 2008-10-27
  • 打赏
  • 举报
回复
类似这样,自己改一下应该就可以

DataSet ds = album.GetPhotoByCategory(categoryID);
if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) return null;
///创建被播放照片的数组
Slide[] photoes = new slide[PicCount];
for (i = 0; i < PicCount; i++)
{
Slide photo = new Slide();
photo.Name = photo.Description = ds.Tables[0].Rows[i]["Title"].ToString();
photo.ImagePath = ds.Tables[0].Rows[i]["Url"].ToString();
photoes[i] = photo;
}
return photoes;
netddayup 2008-10-27
  • 打赏
  • 举报
回复
aa = new AjaxControlToolkit.Slide[] { new AjaxControlToolkit.Slide("upFile/高/图片窗/" + str[i], "", "") };
我觉得是不是问题出在这里。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧