Repeater asp.net倒计时

时间:2014-01-01 19:42:05

标签: jquery asp.net .net

我有一个转发器,它读取了上次约会, 但是我希望这最后的日期有倒计时, 我在互联网上找到了一些代码,但它不起作用

   <asp:UpdatePanel runat="server" ID="TimedPanel" UpdateMode="Conditional">
                                        <Triggers>
                                            <asp:AsyncPostBackTrigger ControlID="UpdateTimer" EventName="Tick" />
                                        </Triggers>
                                        <ContentTemplate>
                                            <%# GetTimeLeft((DateTime)Eval("RequestedDate")).ToString() %>
                                        </ContentTemplate>
                                    </asp:UpdatePanel>
                                      <asp:Timer runat="server" ID="UpdateTimer" Interval="1000" />

感谢这段代码,我可以写出最后的日期,但它不像倒计时一样,比如this

1 个答案:

答案 0 :(得分:0)

让我打破我为解决问题所做的工作:

首先,我构建一个服务器端示例代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("MyDate", typeof(DateTime));
        table.Rows.Add(new object[]{DateTime.Now.AddDays(+180)});
        table.Rows.Add(new object[] { DateTime.Now.AddDays(50)});
        ;
        myRepeater.DataSource = table;
        myRepeater.DataBind();
    }

这是样本的HTML版本:

 <asp:Repeater runat="server" ID="myRepeater">
            <ItemTemplate>
                <div>
                        <div class="dt1" style="display:none;overflow:hidden"><%# ((DateTime)Eval("MyDate")).Year %>,<%# ((DateTime)Eval("MyDate")).Month-1 %>, <%# ((DateTime)Eval("MyDate")).Day %></div> 
                        <div class='dt2'></div>                 
                    </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
     <script type="text/javascript">
         $(document).on('ready', function () {     
             $('.dt1').each(function (index, el) {
                 var value = $(this).text().split(',');               
                 var newYear = new Date(value[0], value[1], value[2]);                                
                 $(this).siblings('.dt2').countdown({ until: newYear });
             });             
         });
         </script>

说实话,我并不为此感到自豪:

                 <div class="dt1" style="display:none;overflow:hidden"><%# ((DateTime)Eval("MyDate")).Year %>,<%# ((DateTime)Eval("MyDate")).Month-1 %>, <%# ((DateTime)Eval("MyDate")).Day %></div> 

和此:

var value = $(this).text().split(',');               
var newYear = new Date(value[0], value[1], value[2]);      

最好JSON序列化日期,然后使用序列化版本,但我不想让这个样本过于复杂,包括对JSON Serializer的引用,并且还要解释它。