CSDN論壇有壇友問:如何使日期控件上某幾個日期無法選擇。
說實話自己以前也沒仔細研究過Calendar這個控件,一般都用其他日期控件,如:My97DatePicker。自己試驗了一下,發現了Calendar控件有個事件Calendar1_DayRender,可以實現讓某些日期無法選擇。 MSDN對這個事件的解釋:當爲 Calendar 控件在控件層次結構中創建每一天時發生。點擊打開鏈接。
DayRender是Calendar控件的一個相對重要的事件.它可以用來在Calendar控件中所有日期的”長相”.這個事件使用了一個DayRenderEventArgs對象作爲其參數.後者則包括兩個屬性:Cell和Day,Calendar1_DayRender具體用法參考Blog: Calendar控件之DayRender事件
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._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>無標題頁</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Calendar ID="Calendar1" runat="server" BackColor="White"
BorderColor="White" BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt"
ForeColor="Black" Height="190px" NextPrevFormat="FullMonth"
ondayrender="Calendar1_DayRender" Width="350px">
<SelectedDayStyle BackColor="#333399" ForeColor="White" />
<TodayDayStyle BackColor="#CCCCCC" />
<OtherMonthDayStyle ForeColor="#999999" />
<NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333"
VerticalAlign="Bottom" />
<DayHeaderStyle Font-Bold="True" Font-Size="8pt" />
<TitleStyle BackColor="White" BorderColor="Black" BorderWidth="4px"
Font-Bold="True" Font-Size="12pt" ForeColor="#333399" />
</asp:Calendar>
</div>
</form>
</body>
</html>
假如不讓選中這幾個日期:20120301、20120229、20120305、20110110,代碼如下:
後臺代碼: protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
if (e.Day.Date.ToString("yyyyMMdd").Equals("20120301") || e.Day.Date.ToString("yyyyMMdd").Equals("20120229") || e.Day.Date.ToString("yyyyMMdd").Equals("20120305") || e.Day.Date.ToString("yyyyMMdd").Equals("20110110"))
{
e.Day.IsSelectable = false;
}
}
可以看到上述日期2012年3月1號沒有下劃線,他是不能夠被選中的。