使用计时器控件调用幻灯片放映中的图像



我有两组名为 Div1 和 Div2 的图像,必须在幻灯片中调用。条件是这样的,

对于前七天,我希望在幻灯片中显示第一组 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>

另请参阅数据库结构:-

ID int 未选中

名称 nvarchar(MAX) 已选中

[订单] int 已检查

名称列包含图像路径

这是我设置的一个小型数据库,用于演示如何处理此需求的想法:

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实现。

这仅允许您根据需要查询图像。可以在计时器回发中重用代码本身,只需调用存储的过程即可。

我不打算编写任何代码,但一个简单的解决方案是在某处有一个开始日期。 你做一个日期差异几天,然后是一个mod 14,任何低于7的东西都是第一周,任何更高的都是第二周,根据这个条件进行选择

最新更新