我有一个转发器,它读取了上次约会, 但是我希望这最后的日期有倒计时, 我在互联网上找到了一些代码,但它不起作用
<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
答案 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的引用,并且还要解释它。