使用Timer Control在幻灯片中调用图像

时间:2014-12-15 11:52:54

标签: c# html sql asp.net timer

我有两组名为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

名称列包含图像路径

2 个答案:

答案 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的东西都是第一周,任何更高的是第二周,根据那个条件做你的选择