asp.net可用性日历显示全年
发布时间:2020-05-25 16:03:55 所属栏目:asp.Net 来源:互联网
导读:我正在寻找一个asp.net控件,它将以网格格式显示一整年,每个月作为一行,每月的每一天作为列.我找到了以下经典的ASP脚本,它生成了正确的格式: http://www.livio.net/code/calendar_36/CalendarTestYearly36.asp?infomode=HELP(参见年历) 有没有这样的东西,或者
|
我正在寻找一个asp.net控件,它将以网格格式显示一整年,每个月作为一行,每月的每一天作为列.我找到了以下经典的ASP脚本,它生成了正确的格式: http://www.livio.net/code/calendar_36/CalendarTestYearly36.asp?infomode=HELP(参见年历) 有没有这样的东西,或者有没有办法在没有特定控制的情况下做到这一点?我是asp.net的新手. 谢谢 解决方法鞭打这个,只为你:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Yearly Calendar</title>
<style type="text/css">
table td { padding:0; margin:0; border:1px solid #dadada; }
table th { width:25px; text-align:center; }
table td { text-align:center; }
table td span { color:#dadada; }
table td a { color:#000000; text-decoration:none; }
table td a:hover { text-decoration:underline; }
table td a.hasEvents { color:#ff0000; }
table td a.selected { color:#0000ff; font-weight:bold; }
table td.month { background-color:#999999; }
table td.weekend { background-color:#D0D0D0; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>
<asp:Literal ID="litSelectedYear" runat="server" />
</th>
<% for (int iWeek = 1; iWeek <= 6; iWeek++) {
for (int iDay = 1; iDay <= 7; iDay++) { if (iWeek == 6 && iDay > 2) break; %>
<th>
<%= GetDayName(iDay) %>
</th>
<% } } %>
</tr>
</thead>
<asp:Repeater ID="repMonths" runat="server" OnInit="repMonths_OnInit" OnItemDataBound="repMonths_OnItemDataBound">
<ItemTemplate>
<tr>
<td class="month">
<asp:HyperLink ID="hylMonth" runat="server" />
</td>
<asp:Repeater ID="repDays" runat="server" OnItemDataBound="repDays_OnItemDataBound">
<ItemTemplate>
<td id="tdDay" runat="server">
<asp:Literal ID="litDay" runat="server" />
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
</html>
using System;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
private DateTime _dtMonth;
private DateTime _selectedDate;
private bool _specialDaySelected = true;
private int _currentBindingMonth;
protected void repMonths_OnInit(object sender,EventArgs e)
{
if (!DateTime.TryParse(Request.QueryString["CalDate"],out _selectedDate))
{
_specialDaySelected = false;
int selectedMonth,selectedYear;
int.TryParse(Request.QueryString["CalYear"],out selectedYear);
int.TryParse(Request.QueryString["CalMonth"],out selectedMonth);
if (selectedYear <= 0) selectedYear = DateTime.Now.Year;
if (selectedMonth <= 1) selectedMonth = 1;
else if (selectedMonth > 12) selectedMonth = 12;
_selectedDate = new DateTime(selectedYear,selectedMonth,1);
}
litSelectedYear.Text = _selectedDate.Year.ToString();
repMonths.DataSource = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};
repMonths.DataBind();
}
protected void repMonths_OnItemDataBound(object sender,RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater repDays = (Repeater)e.Item.FindControl("repDays");
HyperLink hylMonth = (HyperLink)e.Item.FindControl("hylMonth");
_currentBindingMonth = (int)e.Item.DataItem;
_dtMonth = new DateTime(_selectedDate.Year,_currentBindingMonth,1);
hylMonth.Text = _dtMonth.ToString("MMM");
hylMonth.NavigateUrl = string.Format("{0}?CalMonth={1}&CalYear={2}",Request.Path,_selectedDate.Year);
if (_currentBindingMonth == _selectedDate.Month) hylMonth.Attributes.Add("class","selected");
if (_dtMonth.DayOfWeek != DayOfWeek.Monday)
{
int daysToSubtract = -(int)_dtMonth.DayOfWeek;
if (_dtMonth.DayOfWeek == DayOfWeek.Sunday) daysToSubtract = -7; // Special case. US weeks start with sunday,thus the enum DayOfWeek.Sunday = 0.
_dtMonth = _dtMonth.AddDays(daysToSubtract + 1);
}
DateTime[] dates = new DateTime[37];
for (int i = 0; i < 37; i++)
{
dates[i] = _dtMonth;
_dtMonth = _dtMonth.AddDays(1);
}
repDays.DataSource = dates;
repDays.DataBind();
}
}
protected void repDays_OnItemDataBound(object sender,RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DateTime date = (DateTime)e.Item.DataItem;
Literal litDay = (Literal)e.Item.FindControl("litDay");
HtmlTableCell tdDay = (HtmlTableCell)e.Item.FindControl("tdDay");
if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
tdDay.Attributes.Add("class","weekend");
if (_currentBindingMonth == date.Month)
litDay.Text = string.Format("<a href="{0}?CalDate={3}-{2}-{1}"{4}>{3}</a>",date.Year,date.Month,date.Day.ToString("D2"),(_specialDaySelected && date.Equals(_selectedDate)) ? " class="selected"" : string.Empty);
else
litDay.Text = string.Format("<span>{0}</span>",date.Day.ToString("D2"));
// Clear ID's
tdDay.ID = string.Empty;
}
}
public static string GetDayName(int dayInWeek)
{
switch (dayInWeek)
{
case 1: return "mo";
case 2: return "tu";
case 3: return "we";
case 4: return "th";
case 5: return "fr";
case 6: return "sa";
case 7: return "su";
}
return "God only made seven days in a week.";
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net web-api – ASP.net Web API RESTful Web服务基本身
- asp.net – iTextSharp可以栅格化/导出为JPEG或其他图像格式
- asp.net-core – 对Post请求的两次调用:使用http 204和200
- asp.net-mvc-3 – 单元测试一个文件上传,怎么样?
- asp.net-mvc – 抛出一个404像StackOverflow的,没有重定向,
- asp.net – 在将其上传到服务器之前,在客户端进行跨浏览器检
- asp.net-mvc-4 – 如何在MVC4中使用SimpleMembership重置或
- .net – 404控制器在外部组件
- asp.net-mvc – 为什么WebViewPage在MVC3中是抽象的?
- asp.net – 转发器控件中的单选按钮列表
推荐文章
站长推荐
- asp.net-mvc – IIS 7.0不显示自定义错误页面
- asp.net – 进程服务应用程序池“经典.NET AppPo
- asp.net-mvc – 请求验证 – ASP.NET MVC 2
- asp.net-mvc – 如何在剃刀中获取页面原点?
- asp.net-mvc-3 – DropDownListFor Unobtrusive
- asp.net – System.Net.Cookie和System.Web.Http
- 在ASP.NET中如何检测上传文件的MIME类型?
- asp.net – 在根站点下托管的应用程序中配置子目
- asp.net-mvc – 可以在运行时更改数据注释吗? (
- asp.net – 构建动态LINQ查询的最佳方法
热点阅读
