C# 使用计时器控件调用幻灯片中的图像
我有两组名为Div1和Div2的图像,它们必须在幻灯片中调用。情况是这样的, 对于前七天,我希望在幻灯片中显示第一组Div的图像,当这七天结束后,应显示下一组Div的图像。我知道可以通过定时器控制。但我到现在还没用过 直到现在还没有代码可以共享,正如我在表格的幻灯片中所说的那样。如果你还需要什么,一定要告诉我 请帮忙。这样我就可以使用它了 任何帮助都是值得的 我的幻灯片代码如下:-C# 使用计时器控件调用幻灯片中的图像,c#,html,sql,asp.net,timer,C#,Html,Sql,Asp.net,Timer,我有两组名为Div1和Div2的图像,它们必须在幻灯片中调用。情况是这样的, 对于前七天,我希望在幻灯片中显示第一组Div的图像,当这七天结束后,应显示下一组Div的图像。我知道可以通过定时器控制。但我到现在还没用过 直到现在还没有代码可以共享,正如我在表格的幻灯片中所说的那样。如果你还需要什么,一定要告诉我 请帮忙。这样我就可以使用它了 任何帮助都是值得的 我的幻灯片代码如下:- protected void Page_Load(object sender, EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultSQLConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT Name FROM tblImages", conn);
DataTable dt = new DataTable();
da.Fill(dt);
rptImages.DataSource = dt;
rptImages.DataBind();
Page.Header.DataBind();
}
aspx代码:-
<div class="imgbanner-login" style="margin-bottom: 10px;">
<div class="img-login-ca">
<div class="index-img-banner">
<div id="slider" class="nivoSlider">
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<li style="list-style: none;">
<img alt="" src='<%# Eval("Name") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
<div class="login">
<uc1:indexrightpanel runat="server" id="indexRightPanel" />
</div>
</div>
</div>
' />
另请参见数据库结构:-
未选中ID int
名称nvarchar(最大值)已选中
[订单]整数已检查
名称列包含图像路径这里是我设置的一个小数据库,用于演示如何处理此要求:
CREATE TABLE [dbo].[SetTable] (
[SetId] INT IDENTITY (1, 1) NOT NULL,
[SetName] VARCHAR (10) NOT NULL,
PRIMARY KEY CLUSTERED ([SetId] ASC)
);
Go
INSERT INTO SetTable values ('A'), ('B');
GO
CREATE TABLE [dbo].[SetShowLog] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[SetId] INT NOT NULL,
[LastShown] DATETIME DEFAULT (getdate()) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_SetShowLog_SetTable] FOREIGN KEY ([SetId]) REFERENCES [dbo].[SetTable] ([SetId])
);
Go
CREATE TABLE [dbo].[ImageTable] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (25) NULL,
[SetId] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_ImageTable_SetTable] FOREIGN KEY ([SetId]) REFERENCES [dbo].[SetTable] ([SetId])
);
Go
Insert into ImageTable ([Name], [SetId]) values
('image1.jpg', 1),
('image2.jpg', 1),
('image3.jpg', 2),
('image4.jpg', 2);
go
CREATE PROCEDURE [dbo].[GetImages]
AS
declare @logId int;
--get the last shown set
select @logid = IDENT_CURRENT('SetShowLog');
declare @setid int;
declare @lastShowDate datetime;
declare @now datetime;
set @now = GETDATE();
select
@setid = setid,
@lastShowDate = LastShown
from SetShowLog
where Id = @logId;
if @@ROWCOUNT = 0
begin
--this is first insert into the log table
insert into SetShowLog(SetId) values (1);
set @setid = 1; --we show set A as default
end
else
begin
if( DATEDIFF(dd, @lastShowDate, @now) > 7 ) --seven day check
begin
--change the set
select @setid = case @setid when 1 then 2
when 2 then 1 end;
--update log
insert into SetShowLog(SetId) values (@setid);
end
end --//end of @@rowcount check
select * from ImageTable where SetId = @setid;
RETURN 0
您可以在visual studio中启动一个新的数据库文件并运行脚本来初始化数据库…检查存储的过程GetImages
实现
这只允许您根据需要查询图像。您可以在计时器回发中重复使用代码本身,只需调用存储的进程。我不打算编写任何代码,但一个简单的解决方案是在某个地方设置startdate。你先做几天的datediff,然后是mod 14,低于7的是第一周,高于7的是第二周,根据该条件进行选择以下是文档:。阅读它,试着为你的案子做点什么,然后回来。@mybirthname:谢谢你的推荐,我一定会试试:)7天!!!就像在浏览器中一样,预计会保持打开状态那么长时间@DeoWalk:客户的要求是7天,之后是下一组图像。有可能吗,请帮忙。浏览器部分不是他们的问题。我们只需要让它运行7天,在下一组图像之后,浏览器程序必须在所有7天内24小时打开?是的。在计时器触发的事件中,您需要编写您在页面加载中编写的代码…仅编写绑定中继器的部分。我想你也可以为它设置一个很高的间隔…你的SelectCommand应该用来查询存储过程的结果,而不是简单的sql查询…你的意思是说我的其余代码很好,只需要添加如下过程:-
SqlDataAdapter da=newsqldataadapter(“GetImages”,conn)代码>如果您不确定如何在存储过程中使用SelectCommand,请查看您在尝试使用该命令时遇到了什么问题。。。?