我有两组名为Div1和Div2的图像,必须在幻灯片中调用。条件就是这样,
前7天,我希望第一组Div图像能够在幻灯片中显示,一旦完成七天,下一组Div图像就会显示出来。我知道可以通过定时器控制。但到目前为止我还没有用过。
到目前为止没有代码可以分享,因为我已经从表格中调用了幻灯片中的图像。如果你还想要别的东西,请告诉我。
请帮忙。所以我可以使用它
任何帮助都会很明显
我的幻灯片代码在这里: -
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>
另见db strucutre: -
ID int未选中
名称nvarchar(MAX)已选中
[Order] int Checked
名称列包含图像路径
答案 0 :(得分:2)
这是我设置的一个小型数据库,用于演示如何处理此要求的想法:
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中启动一个新的数据库文件并运行脚本来初始化db ...检查存储的proc GetImages
实现。
这使您可以根据需要查询图像。您可以在Timer回发中重复使用代码本身,只需调用存储过程。
答案 1 :(得分:0)
我不打算编写任何代码,但一个简单的解决方案就是在某处创建一个startdate。你做了几天的约会,然后是一个mod 14,任何低于7的东西都是第一周,任何更高的是第二周,根据那个条件做你的选择